From: Shugo Maeda Date: 2001-05-28T15:06:34+09:00 Subject: [ruby-dev:13373] Re: StringBuffer 前田です。 At Mon, 28 May 2001 14:52:23 +0900, matz@zetabits.com (Yukihiro Matsumoto) wrote: > |Rubyレベルで見せるかどうかは別として、JavaのStringBufferのような > |クラスを用意して、それを利用するようにした方がよいのではないでしょ > |うか。 > > 直接聞いた方が明らかに速いのですが、JavaのStringBufferはどの > ようにして高速化を達成しているのですか? 基本的にはRubyのArrayと同様の手法です。 capacityの拡張は以下のようなメソッドで行っています。 private void expandCapacity(int minimumCapacity) { int newCapacity = (value.length + 1) * 2; if (minimumCapacity > newCapacity) { newCapacity = minimumCapacity; } char newValue[] = new char[newCapacity]; System.arraycopy(value, 0, newValue, 0, count); value = newValue; shared = false; } -- 前田 修吾