Rubyによる正規表現コンパイラ(その3)
ベンチマークしてみました。
if __FILE__ == $0 then require 'benchmark' ruby = "ruby" perl = "perl" dumy1 = "absadsafdsredddkflr" dumy2 = "sse3fdfds2#%666721" all = (dumy1 + dumy2 * 2 + dumy1) * 109000 + ruby + dumy1* 12 + dumy2 * 11 + perl + (dumy1 + dumy2 * 2 + dumy1) * 320 p all.size Benchmark.bm do |x| x.report { p (/ruby.*perl/ =~ all) p (/perl.*ruby/ =~ all) } llvmatch1 = MatcherLLVM.new st = reexp_comp(".*ruby.*perl") llvmatch1.compile(st) llvmatch2 = MatcherLLVM.new st = reexp_comp(".*perl.*ruby") llvmatch2.compile(st) x.report { p llvmatch1.match(all) p llvmatch2.match(all) } end end
結果です。
8090114 user system total real 8066000 nil 0.032000 0.000000 0.032000 ( 0.025000) true nil 0.156000 0.000000 0.156000 ( 0.164000)
llvmruby版の方が5倍ほど****遅い****です。
・・・、まあ世の中こんなものですね。