diff options
author | makoto kuwata <kwa@kuwata-lab.com> | 2007-01-09 04:57:44 +0000 |
---|---|---|
committer | makoto kuwata <kwa@kuwata-lab.com> | 2007-01-09 04:57:44 +0000 |
commit | a63915b8228d7ea1e0762ff0ac8dfaae7079c33b (patch) | |
tree | e86def5276239fd1d7957caaff1adb966fd6e751 /benchmark | |
parent | f120ccf641b2f5e57405d53d30b1e95763ea9347 (diff) | |
download | erubis-a63915b8228d7ea1e0762ff0ac8dfaae7079c33b.tar.gz |
- [change] add '-S' (use /dev/null) option to 'benchmark/erubybench.rb'
- [change] use STDOUT instead of /dev/null by default in erubybench.rb
Diffstat (limited to 'benchmark')
-rw-r--r-- | benchmark/erubybench.rb | 71 |
1 files changed, 37 insertions, 34 deletions
diff --git a/benchmark/erubybench.rb b/benchmark/erubybench.rb index 8220859..9679489 100644 --- a/benchmark/erubybench.rb +++ b/benchmark/erubybench.rb @@ -26,11 +26,18 @@ defaults = { ## usage def usage(defaults) script = File.basename($0) - s = "Usage: ruby #{script} [-h] [-n N] [-f file] [-d file] [-t testname ...]\n" - s << " -h : help\n" - s << " -n N : number of times to loop (default #{defaults[:ntimes]})\n" - s << " -f file : eruby filename (default '#{defaults[:filename]}')\n" - s << " -d file : data filename (default '#{defaults[:datafile]}')\n" + s = <<END +Usage: ruby #{script} [..options..] + -h : help + -n N : number of times to loop (default #{defaults[:ntimes]}) + -F erubyfile : eruby filename (default '#{defaults[:filename]}') + -f datafile : data filename (default '#{defaults[:datafile]}') + -t testname,.. : target testnames + -x testname,.. : exclude testnames + -T testtype : basic/cache/func + -X : expand loop + -S : use /dev/null instead of stdout +END return s end @@ -40,7 +47,7 @@ require 'optparse' optparser = OptionParser.new options = {} ['-h', '-n N', '-F erubyfile', '-f datafile', '-t targets', '-x exclude', - '-T testtype', '-C compiler', '-X'].each do |opt| + '-T testtype', '-C compiler', '-X', '-S'].each do |opt| optparser.on(opt) { |val| options[opt[1]] = val } end begin @@ -59,30 +66,12 @@ targets = options[?t] testtype = options[?T] compiler_name = options[?C] || 'ErubisOptimized' excludes = options[?x] -$expand = options[?X] ? true : false +$expand = options[?X] ? true : false +use_devnull = options[?S] ? true : false $ntimes = ntimes - -#flag_help = false -#flag_all = false -#targets = nil -#test_type = nil -#compiler_name = 'ErubisOptimized' -#while !ARGV.empty? && ARGV[0][0] == ?- -# opt = ARGV.shift -# case opt -# when '-n' ; n = ARGV.shift.to_i -# when '-f' ; filename = ARGV.shift -# when '-d' ; datafile = ARGV.shift -# when '-h', '--help' ; flag_help = true -# when '-A' ; test_all = true -# when '-C' ; compiler_name = ARGV.shift -# when '-t' ; test_type = ARGV.shift -# else ; raise "#{opt}: invalid option." -# end -#end -#puts "** n=#{n.inspect}, filename=#{filename.inspect}, datafile=#{datafile.inspect}" +$stderr.puts "** $ntimes=#{$ntimes.inspect}, erubyfile=#{erubyfile.inspect}, datafile=#{datafile.inspect}" ## help @@ -270,7 +259,7 @@ testdefs.each do |h| ## define test functions for each classes s = '' s << "def test_#{h['name']}(erubyfile, data)\n" - s << " $stdout = $devnull\n" + s << " $stdout = $outstream\n" if $expand $ntimes.times do s << ' ' << h['code'] #<< "\n" @@ -308,7 +297,7 @@ testdefs.each do |h| pr = h['return'] ? 'print ' : '' s = '' s << "def test_view_#{h['name']}(data)\n" - s << " $stdout = $devnull\n" + s << " $stdout = $outstream\n" if $expand $ntimes.times do s << " #{pr}view_#{h['name']}(data)\n" @@ -338,7 +327,7 @@ testdefs.each do |h| pr = h['return'] ? 'print ' : '' s = '' s << "def test_cache_#{h['name']}(erubyfile, data)\n" - s << " $stdout = $devnull\n" + s << " $stdout = $outstream\n" s << " $ntimes.times do\n" s << " #{pr}eval(File.read(\"\#{erubyfile}.#{h['name']}\"))\n" s << " end\n" @@ -354,11 +343,11 @@ end ## open /dev/null -$devnull = File.open("/dev/null", 'w') +$outstream = use_devnull ? File.open("/dev/null", 'w') : STDOUT ## rehearsal -$stdout = $devnull +$stdout = $outstream testdefs.each do |h| ## execute test code eval h['code'] @@ -373,8 +362,22 @@ end $stdout = STDOUT -## do benchmark +## change benchmark library to use $stderr instead of $stdout require 'benchmark' +module Benchmark + class Report + def print(*args) + $stderr.print(*args) + end + end + module_function + def print(*args) + $stderr.print(*args) + end +end + + +## do benchmark begin Benchmark.bm(30) do |job| ## basic test @@ -411,5 +414,5 @@ begin end ensure - $devnull.close() + $outstream.close() if use_devnull end |