0

我有一系列 StrBuf 对象,想知道将它们连接在一起的最有效方法。

add()方法,但文档说,“将 x.toStr 添加到此缓冲区的末尾”。如果我一遍又一遍地这样做,我想那StrBuf.toStr()不是那么高效。

(我知道真正的答案是只使用一个 StrBuf,但在这里请幽默!)

干杯。

更新:

查看 Java 源代码,引擎盖下StrBuf使用了一个 Java StringBuilder,它使用一个 char 数组作为它的内部缓冲区。所以@Adrian,是的,拥有一个大的初始缓冲区很重要。

StrBuf.toStr()目前而言,使用Arrays.copyOfRange()- 创建一个新的 Java 字符串是合理的,但鉴于有一个append(StringBuffer sb)方法,这是不必要的。

4

2 回答 2

1

不是真的 - StrBuf 中没有针对这种情况的优化。您看到今天的性能问题了吗?

通常对于我们的 API,我们会OutStream从实例StrBuf.out而不是实际StrBuf实例传递。不确定这是否有助于您的情况。

于 2013-12-03T15:17:32.867 回答
1

我想你可以创建一个容量足够大的新 StrBuf:

capacity
    Int capacity
    The number of characters this buffer can hold without allocating more memory.

make
    new make(Int capacity := 16)
    Create with initial capacity (defaults to 16)
于 2013-12-03T13:57:59.807 回答