StringBuilder 真的比连接十几个字符串慢吗?
编译器如何优化字符串连接,使得使用“+”连接十几个字符串会比StringBuilder更好?
从一本(本·沃森写的)书中说:
字符串连接:用于简单连接已知的(在编译时)
time) 字符串数量,只需使用“+”运算符或
String.Concat 方法。这通常比使用
字符串生成器。字符串结果 = a + b + c + d + e + f;不要
考虑 StringBuilder 直到字符串数量可变并且
可能大于几十个。编译器会优化简单
字符串连接以减少内存开销。
String.Concat
效率更高,因为它从一开始就知道所有字符串长度。因此它可以分配一个长度合适的缓冲区,将字符串复制到其中并返回该缓冲区。
StringBuilder
必须分配一个小缓冲区,每次调用时重新分配和复制Append
导致它空间不足。最后的调用ToString()
还必须分配另一个缓冲区。
So use String.Concat
当你事先知道你有多少根弦时;使用StringBuilder
当你不这样做时。
在 C# 中,对 + 运算符的链式调用会自动转换为对String.Concat
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)