全部,
为什么建议StringBuffer
/StringBuilder
对象的大小应该初始化为 2^{1...n} 的大小(虽然通常它会 > 64)。这样做会有什么优势/优化?
全部,
为什么建议StringBuffer
/StringBuilder
对象的大小应该初始化为 2^{1...n} 的大小(虽然通常它会 > 64)。这样做会有什么优势/优化?
建议是因为,默认情况下,构造函数会将其初始化为 16 的大小,并且每当超过此容量时,它将加倍并创建一个新容量。
因此,如果您确定您将使用超过 16 个空格,则应该使用更高的值对其进行初始化。
这样做会有什么优势/优化?
我认为这样做根本没有任何优势。
我的建议是选择一个比预期尺寸稍大的初始尺寸......如果你有一个中等好的估计。如果您没有估算值,则根本不会通过提供初始大小来获得太多收益。
使用显着高估的初始大小不是一个好主意。它浪费空间,JVM 将不得不将您在某些时候不使用的所有字符归零,这会消耗 CPU / 内存周期。
[应该可以凭经验计算出低估和高估大小的成本,并与使用默认初始大小的成本进行比较。但是,这些数字可能取决于 JIT 优化器的性能,以及内存复制速度与归零速度之类的因素。换句话说,它们将是特定于平台的。]