将StrBuf附加到StrBuf的最佳方法是什么?

时间:2013-12-03 13:54:39

标签: fantom

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

add()方法,但文档说“Add x.toStr to the end of this buffer”。如果我一遍又一遍地这样做,我会想象StrBuf.toStr()并不是那么高效。

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

干杯。

更新

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

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

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

不是 - 在这种情况下,StrBuf中没有优化。您是否看到了今天的性能问题?

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