Yukihiro Matsumotoさんの
<991069145.399408.3226.nullmailer / ev.netlab.zetabits.com>から
> 実は orig フィールドを再利用してStringにStringBufferの働きを
> させる方法を思いついたので実装してみました。既に orig フィー
> ルドの再利用は行っていたのでそんなに大変じゃありませんでした。
> 
> んで、結果ですがほとんど変化がありませんでした。大量の文字列
> をconcatするような場合以外にはあまり関係ないみたいです。がっ
> くし。この修正どうしようかなあ。

"大量の文字列をconcatするような場合" だけでも、
かなり差があるのであれば、導入してもよいのでは?

それほど差がないのであれば、そこまでやらなくても、
文字列を指定した長さにリサイズするメソッド(拡張された
領域は0に初期化)を追加するだけでも、十分かもしれません。

田中さんの最初のメールにある、以下の対処方法で、
特に不都合は感じられないので。

[ruby-list:29640] string joining with O(n)
> とりあえず
> 
> def joinstrings(ss)
>   l = 0
>   ss.each {|s|
>     l += s.length
>   }
>   result = ' ' * l
>   i = 0
>   ss.each {|s|
>     result[i, s.length] = s
>     i += s.length
>   }
>   return result
> end
> 
> という関数を作って線形に押えることには成功したのですが、なにかもっとう
> まい方法はないものでしょうか?

----
小迫@ソフネック   渋谷区恵比寿1-15-1