我有一系列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)
方法则是不必要的。
答案 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
实例。不确定这是否有助于您的情况。