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倍ほど****遅い****です。
・・・、まあ世の中こんなものですね。