0

一連の StrBuf オブジェクトがあり、それらを連結する最も効率的な方法を知りたいです。

add()メソッドはありますが、ドキュメントには「 x.toStr をこのバッファの最後に追加する」と書かれています。これを何度も何度も繰り返しているとしたら、StrBuf.toStr()それほどパフォーマンスが良くないと思います。

(本当の答えは 1 つの StrBuf を使用することだとわかっていますが、ここで冗談を言ってください!)

乾杯。

アップデート:

Java ソースを見ると、内部バッファとして char 配列を使用StrBufする Javaが使用されています。StringBuilderそうですね@Adrian、大きな初期バッファを持つことが重要です。

関係する限りStrBuf.toStr()、新しい Java String は次を使用して作成されますArrays.copyOfRange()- これは合理的ですが、append(StringBuffer sb)メソッドがあることを考えると不必要です。

4

2 に答える 2

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 に答える
1

そうではありません-その場合、StrBufには最適化はありません。現在使用しているものでパフォーマンスの問題が発生していますか?

通常、私たちの APIでは、実際のインスタンスではなく、OutStreamそこからインスタンスを渡します。それがあなたのケースに役立つかどうかはわかりません。StrBuf.outStrBuf

于 2013-12-03T15:17:32.867 に答える