mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
c0b4e90f08
* lib/webrick/httpservlet/cgihandler.rb: use RbConfig.ruby. * test/ruby/envutil.rb: ditto. * benchmark/report.rb: ditto. * benchmark/runc.rb: ditto. * tool/eval.rb: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26216 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
79 lines
1.2 KiB
Ruby
79 lines
1.2 KiB
Ruby
#
|
|
# YARV benchmark driver
|
|
#
|
|
|
|
require 'yarvutil'
|
|
require 'benchmark'
|
|
require 'rbconfig'
|
|
|
|
def exec_command type, file, w
|
|
<<-EOP
|
|
$DRIVER_PATH = '#{File.dirname($0)}'
|
|
$LOAD_PATH.replace $LOAD_PATH | #{$LOAD_PATH.inspect}
|
|
require 'benchmark'
|
|
require 'yarvutil'
|
|
# print '#{type}'
|
|
begin
|
|
puts Benchmark.measure{
|
|
#{w}('#{file}')
|
|
}.utime
|
|
rescue Exception => exec_command_error_variable
|
|
puts "\t" + exec_command_error_variable.message
|
|
end
|
|
EOP
|
|
end
|
|
|
|
def benchmark cmd
|
|
rubybin = ENV['RUBY'] || RbConfig.ruby
|
|
|
|
IO.popen(rubybin, 'r+'){|io|
|
|
io.write cmd
|
|
io.close_write
|
|
return io.gets
|
|
}
|
|
end
|
|
|
|
def ruby_exec file
|
|
prog = exec_command 'ruby', file, 'load'
|
|
benchmark prog
|
|
end
|
|
|
|
def yarv_exec file
|
|
prog = exec_command 'yarv', file, 'YARVUtil.load_bm'
|
|
benchmark prog
|
|
end
|
|
|
|
$wr = $wy = nil
|
|
|
|
def measure bench
|
|
file = File.dirname($0) + "/bm_#{bench}.rb"
|
|
r = ruby_exec(file).to_f
|
|
y = yarv_exec(file).to_f
|
|
puts "#{bench}\t#{r}\t#{y}"
|
|
end
|
|
|
|
def measure2
|
|
r = ruby_exec.to_f
|
|
y = yarv_exec.to_f
|
|
puts r/y
|
|
end
|
|
|
|
if $0 == __FILE__
|
|
%w{
|
|
whileloop
|
|
whileloop2
|
|
times
|
|
const
|
|
method
|
|
poly_method
|
|
block
|
|
rescue
|
|
rescue2
|
|
}.each{|bench|
|
|
measure bench
|
|
}
|
|
end
|
|
|
|
|
|
|
|
|