越来越多的编译器使用不可变字符串(因为字符串实习,但还有其他原因吗?)。但是,串联字符串时字符串缓冲区要快得多。是否有任何理由不是所有编译器都在内部使用字符串缓冲区而不是不可变字符串?
答案 0 :(得分:1)
不可变性的最大理由可能是它对并发性的好处。如果您知道它永远不会改变,则无需锁定和保护对象。随着我们多核处理器中的核心数量的增加,这种好处变得越来越引人注目。
当然,有一些权衡取舍。正如您所提到的,字符串缓冲区可以在执行大量字符串操作的应用程序中超出新字符串的常量分配。幸运的是,大多数语言都包含隐藏在库中的字符串缓冲区。默认情况下,不可变字符串更安全。在某些情况下,它们更快。如果您发现它们不适合您,您可以随时更换缓冲区。