$: << "../../lib" require 'rpeg' require 'mkmf' calc = RPeg.load File.read(File.join(File.dirname(__FILE__), "..", "calc.peg")) File.open("calc.c", "w") { |f|f << calc.compile2c("calcext") } with_cflags("-Os -finline -fomit-frame-pointer") do create_makefile 'calcext' system "make" end require 'calcext' (0..2000).step(10) { |i| t = Time.now 10.times { Calcext.parse("1+#{'1+'*i}1+1+1+1") } puts "#{i} #{Time.now-t}" STDOUT.flush }