Text::Hamlの実行コードをキャッシュして高速化した話
Text::Haml - search.cpan.org
Perl版HamlのText::Hamlだが毎回$haml->render_fileで
構文解析→出力用package作成→出力用サブルーチン実行
という手順を踏んでいるので、Hamlファイルが大きくなればなるほど、
実行速度がどんどん遅くなっていやだなーと思ったので、
最初の2つをキャッシュ化するようにしてみた。
https://github.com/rightgo09/text-haml
Text::Xslateを参考に3つのオプションが使えるようにした。
my $haml = Text::Haml->new( path => 'views/', # default "." cache => 2, # default 1 cache_dir => '/tmp' # default $ENV{HOME}/.text_haml_cache ); $haml->render_file('index.haml', ( param1 => value1, ));
だいたい500KBのシンプルなHamlテンプレートを使ってベンチマーク試したら620432%という数字が出てきてびっくりしたw
6千倍かよ。
500KBは大きいにしても、10KBのテンプレートでも100倍くらいにはなったので、キャッシュはあったほうがいいのではないかと思う。
そして初めてのpull request。