正規表現コンパイラをgithubに置きました
正規表現コンパイラをgithubに置きました。
http://github.com/miura1729/regexpllvm/tree/master
生成したllvmのbitcodeを最適化できるようにしました。
やっていることは、bitcodeをファイルに書き出してoptを呼んでいるだけです。
def optimize bitout = Tempfile.new('bit') @module.write_bitcode("#{bitout.path}") File.popen("/usr/local/bin/opt -O3 -f #{bitout.path}") {|fp| @module = LLVM::Module.read_bitcode(fp.read) } @func = @module.get_or_insert_function("regmatch", Type.function(VALUE, [VALUE])) end
ベンチマークをやってみましたが、最適化してもほとんど効果が無かったです。やはり、ジャンプの塊ではパイプラインストールしまくってスピードが出ないのかもしれないです。
user system total real Ruby's 0.078000 0.000000 0.078000 ( 0.084000) llvm without opt 0.344000 0.000000 0.344000 ( 0.341000) llvm with opt 0.328000 0.000000 0.328000 ( 0.334000)