fix variable name.
[ruby-svn.git] / benchmark / report.rb
blob8305330b453b4e363f7b2f1ee0223c631c94efaf
2 # YARV benchmark driver
5 require 'yarvutil'
6 require 'benchmark'
7 require 'rbconfig'
9 def exec_command type, file, w
10   <<-EOP
11   $DRIVER_PATH = '#{File.dirname($0)}'
12   $LOAD_PATH.replace $LOAD_PATH | #{$LOAD_PATH.inspect}
13   require 'benchmark'
14   require 'yarvutil'
15 #  print '#{type}'
16   begin
17     puts Benchmark.measure{
18       #{w}('#{file}')
19     }.utime
20   rescue Exception => exec_command_error_variable
21     puts "\t" + exec_command_error_variable.message
22   end
23   EOP
24 end
26 def benchmark cmd
27   rubybin = ENV['RUBY'] || File.join(
28     Config::CONFIG["bindir"],
29     Config::CONFIG["ruby_install_name"] + Config::CONFIG["EXEEXT"])
30     
31   IO.popen(rubybin, 'r+'){|io|
32     io.write cmd
33     io.close_write
34     return io.gets
35   }
36 end
38 def ruby_exec file
39   prog = exec_command 'ruby', file, 'load'
40   benchmark prog
41 end
43 def yarv_exec file
44   prog = exec_command 'yarv', file, 'YARVUtil.load_bm'
45   benchmark prog
46 end
48 $wr = $wy = nil
50 def measure bench
51   file = File.dirname($0) + "/bm_#{bench}.rb"
52   r = ruby_exec(file).to_f
53   y = yarv_exec(file).to_f
54   puts "#{bench}\t#{r}\t#{y}"
55 end
57 def measure2
58   r = ruby_exec.to_f
59   y = yarv_exec.to_f
60   puts r/y
61 end
63 if $0 == __FILE__
64   %w{
65     whileloop
66     whileloop2
67     times
68     const
69     method
70     poly_method
71     block
72     rescue
73     rescue2
74   }.each{|bench|
75     measure bench
76   }
77 end