From: Koji Arai Date: 2003-06-08T21:36:22+09:00 Subject: [ruby-dev:20338] Re: 1.8 gsub 新井です。 In message "[ruby-dev:20337] Re: 1.8 gsub" on 08 Jun 2003 21:16:39 +0900, 竹浜 博久 wrote: > > str.gsub(patstr, repl) > > > > は、 > > > > str.gsub(Regexp.compile(Regexp.quote(patstr)), repl) > > > > という動作をしますので、このように書けば良いです。 > > このような動作をするとは考えていませんでした。 > 第一引数が文字列だった場合、正規表現にコンパイルせず、 > 文字列のまま置き換えをする(そしてそのほうが速い)と思って > いました。違うんですね。 # うーん、マニュアルの書き方が悪かった気がしますね。 1.8 では、結果的にそうなります。速度はコンパイル結果がキャッ シュされれば速いと思いますが(キャッシュサイズは 1 でしたっけ?) 前にも書きましたが gsub(/ /, '') が parse 時に正規表現をコンパイルするので実行速度は一番速い ということになると思います。 # 現在の ruby で、index と正規表現の速度差は知りませんが、昔 # は正規表現の方が速かったですよね?計ったことないですが。 # index は途中でハッシュを使った探索アルゴリズムに変わったと # 思いますが効果の程は? -- 新井康司 (Koji Arai)