【发布时间】:2010-12-17 13:28:08
【问题描述】:
作为填充搜索引擎过程的一部分,我还填充了 Berekely-DB 值存储。这个过程每晚重复一次,目前每晚总运行时间的 +/- 60% 是由创建要插入值存储的值引起的(因此不包括实际插入 Berekely-DB 和导致的时间由 Berekely 客户提供
这些值是通过为每个键分配一个字符串生成器创建的,然后平均将大约 1000 个字符串附加到这样的字符串生成器。结果值平均约为 10k。 我想知道这是否可以更有效地完成,因为: - 附加到每个 Stringbuilders 的(平均)1000 个字符串具有固定长度:即:每个 String 具有相同的长度,并且这个长度是预先知道的) - 所有字符串都附加到末尾。
例如,将 stringbuilder 换成 char[] 或 characterStream / writer 会更高效吗?这样我就可以在 char[] 中保留并索引写入的位置。
谢谢, 吉尔特-扬
【问题讨论】:
-
量一下看看;看起来您对要尝试的内容很清楚。
-
是的,我想这就是我要做的。然而内存限制也是一个问题,所以我应该有一个自适应策略,当不需要它们时不会创建大字符数组。我会尝试看看我能想出什么
-
AFAIK,StringBuilders 用完时会加倍缓冲区。这是一个很好的策略,而且很难被击败。但是,了解合理的最小尺寸界限将帮助您预先确定尺寸,从而避免其中一些扩展。祝你好运!
标签: java performance stringbuilder