mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	 3a47cf3395
			
		
	
	
		3a47cf3395
		
	
	
	
	
		
			
			git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31573 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
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 |