前田です。

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;
    }

-- 
前田 修吾