关于附加字符串StringBulider和+
对于两者的性能一直有些疑虑,做了个测试
测试代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
using System; using System.Text; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { StringBuilder sb = new StringBuilder(); DateTime st1 = DateTime.Now; for (int i = 0; i < 100000; i++) { sb.Append(i); sb.Append(","); } DateTime et1 = DateTime.Now; Console.WriteLine(st1-et1); string s = ""; DateTime st2 = DateTime.Now; for (int i = 0; i < 50000; i++) { s += i + ","; } DateTime et2 = DateTime.Now; Console.WriteLine(st2 - et2); Console.ReadLine(); } } } |
运行结果
注意下我上面的代码,用+=拼接的地方循环是5W次不是10W,因为10W等得太久了-_-!
下面测试了一下string类型控制判断的实验,不过有点糟糕,第一次尝试这样的实验,在网上看到了一篇从CIL分析的文章,写的很好!
由浅入深CIL系列:5.抛砖引玉:判断string是否为空的四种方法的CIL代码看看效率如何?
要进步的空间很大啊