【发布时间】:2012-01-21 13:38:59
【问题描述】:
大家下午好,我正在使用java.lang.StringBuilder 来存储一些字符。我不知道我要提前存储多少个字符,除了:
- 60% 的情况下,只有(完全)7 个字符
- 39% 的时间,它(大约)是 3500 个字符
- 1% 的时间,大约是 20k 个字符
我们如何计算应该使用的最佳初始缓冲区长度?
目前我正在使用new java.lang.StringBuilder(4000),但这只是因为我之前懒得想。
【问题讨论】:
-
听起来默认值在大多数情况下可能是最佳的。你能回收你的 StringBuilders 吗?
-
“我们应该忘记小的效率,比如说大约 97% 的时间:过早的优化是万恶之源”
-
@PeterLawrey 不,它们不可回收(我的意思是它们可以,而且我相信这会更加优化,但需要更改源代码)。
-
@natix 对过早优化的恐惧是我插入 4000 并首先完成它的部分原因。不过既然是post-mature,简单地改变构造函数的参数也不是太难吧?
-
任何更改都需要更改源代码。您可以在没有对象池样式回收的情况下使对象可重用。
标签: java math language-agnostic buffer stringbuilder