首先看测试代码:
1 public class StringSpeedTest 2 { 3 private readonly static string _testStr = "0123456789"; 4 5 public string StringAdd(int count) 6 { 7 string str = string.Empty; 8 for (int i = 0; i < count; i++) 9 { 10 str += _testStr; 11 } 12 return str; 13 } 14 15 public string UseStringBuilder(int count) 16 { 17 StringBuilder sb = new StringBuilder(); 18 19 for (int i = 0; i < count; i++) 20 { 21 sb.Append(_testStr); 22 } 23 24 return sb.ToString(); 25 } 26 public string UseStringBuilderWithCapacity(int count) 27 { 28 StringBuilder sb = new StringBuilder(count * _testStr.Length); 29 30 for (int i = 0; i < count; i++) 31 { 32 sb.Append(_testStr); 33 } 34 35 return sb.ToString(); 36 } 37 public string UseStringConcat(int count) 38 { 39 string[] list = new string[count]; 40 for (int i = 0; i < count; i++) 41 { 42 list[i] = _testStr; 43 } 44 return string.Concat(list); 45 } 46 public string UseStringConcatWithList(int count) 47 { 48 List<string> list = new List<string>(count); 49 for (int i = 0; i < count; i++) 50 { 51 list.Add(_testStr); 52 } 53 return string.Concat(list); 54 } 55 public string UseStringConcatWithListToArray(int count) 56 { 57 List<string> list = new List<string>(count); 58 for (int i = 0; i < count; i++) 59 { 60 list.Add(_testStr); 61 } 62 return string.Concat(list.ToArray()); 63 } 64 }