min*_*d1n 2 .net c# string stringbuilder
StringBuilder是否比连接十几个字符串慢?编译器如何优化字符串连接,以便使用"+"连接十几个字符串将比StringBuilder更好?
从一本书(Ben Watson编写)中可以看出:
字符串连接:对于已知(在编译时)数量的字符串的简单连接,只需使用'+'运算符或String.Concat方法.这通常比使用StringBuilder更有效.string result = a + b + c + d + e + f; 在字符串数量可变且可能大于几十个之前,不要考虑StringBuilder.编译器将以减少内存开销的方式优化简单字符串连接.
String.Concat效率更高,因为它从一开始就知道所有的字符串长度.因此它可以分配一个具有恰当长度的缓冲区,将字符串复制到其中并返回该缓冲区.
StringBuilder必须分配一个小缓冲区,每次调用时都要重新分配和复制Append,以使其耗尽空间.最后的调用ToString()还必须分配另一个缓冲区.
所以String.Concat当你事先知道你有多少弦时使用; StringBuilder当你不这样做时使用.
在C#中,对+运算符的链接调用会自动转换为单个调用String.Concat.
| 归档时间: |
|
| 查看次数: |
584 次 |
| 最近记录: |