From: MoonWolf Date: 2003-07-19T23:50:09+09:00 Subject: [ruby-list:37891] Re: ERB の仕様 MoonWolfです。 ERBのスキャン・パースを高速化するerbscanというライブラリを作りました。 Cで書かれたerbscan.soとERB::Compilerを高速化するerb_fast.rbで構成されています。 require 'erb'のかわりにrequire 'erb_fast'とするとerbscanを使って コンパイルするようになります。 ダウンロード http://www.moonwolf.com/ruby/archive/erbscan-0.0.20030719.tar.gz !!!!! 注意 !!!!! * Ruby1.8専用です。 * 仕様はeruby-1.0.3に合わせていて、ERBと非互換となっています。 1.<%〜%>の外側では'%%>'から'%>'への変換を行いません。 tDiaryで使用するならskel/*.rhtmlの'%%>'を'%>'に置換してください。 2.<%〜%>の内側では'<%%'から'<%'への変換を行いません。 3.%%で始まる行も<%〜%>が有効です。 [ruby-list:37889]のサンプルデータでベンチマークを取ってみました。 コンパイルが8.5倍速くなりました。 $ wc sample.erb 10240 10240 101530 sample.erb $ time erb -x sample.erb > /dev/null real 0m3.777s user 0m3.730s sys 0m0.050s $ time ruby -r erb_fast /home/moonwolf/bin/erb -x sample.erb > /dev/null real 0m0.441s user 0m0.430s sys 0m0.020s 実行時間を含めても3.5倍の速さです。 $ time erb sample.erb > /dev/null real 0m5.016s user 0m4.910s sys 0m0.110s $ time ruby -r erb_fast /home/moonwolf/bin/erb sample.erb > /dev/null real 0m1.402s user 0m1.380s sys 0m0.020s