summaryrefslogtreecommitdiff
path: root/benchmark
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-10-16 13:26:46 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-10-16 13:26:46 +0000
commitf8c2a968dd3628dc0a5f3b671bd41a08104ce466 (patch)
tree0ae933ff0f60c08ff94556acfc7348169e74379e /benchmark
parent64b1751194754a20173bbf48cff2035078bc225f (diff)
* benchmark/driver.rb (show_results): Show speedup ratio
with first executables score at last of results if two or more executrables are given. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37225 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'benchmark')
-rw-r--r--benchmark/driver.rb63
1 files changed, 45 insertions, 18 deletions
diff --git a/benchmark/driver.rb b/benchmark/driver.rb
index 7cd2714..cea5d55 100644
--- a/benchmark/driver.rb
+++ b/benchmark/driver.rb
@@ -90,8 +90,27 @@ class BenchmarkDriver
end
end
- def average results
- results.inject(:+) / results.length
+ def adjusted_results name, results
+ s = nil
+ results.each_with_index{|e, i|
+ r = e.min
+ case name
+ when /^vm1_/
+ if @loop_wl1
+ r -= @loop_wl1[i]
+ r = 0 if r < 0
+ s = '*'
+ end
+ when /^vm2_/
+ if @loop_wl2
+ r -= @loop_wl2[i]
+ r = 0 if r < 0
+ s = '*'
+ end
+ end
+ yield r
+ }
+ s
end
def show_results
@@ -113,30 +132,38 @@ class BenchmarkDriver
output "minimum results in each #{@repeat} measurements."
end
+ output "Execution time (sec)"
output "name\t#{@execs.map{|(_, v)| v}.join("\t")}"
@results.each{|v, result|
rets = []
- s = nil
- result.each_with_index{|e, i|
- r = e.min
- case v
- when /^vm1_/
- if @loop_wl1
- r -= @loop_wl1[i]
- s = '*'
- end
- when /^vm2_/
- if @loop_wl2
- r -= @loop_wl2[i]
- s = '*'
- end
- end
+ s = adjusted_results(v, result){|r|
rets << sprintf("%.3f", r)
}
-
output "#{v}#{s}\t#{rets.join("\t")}"
}
+ if @execs.size > 1
+ output
+ output "Speedup ratio comare with the result of `#{@execs[0]}' (greater is better)"
+ output "name\t#{@execs[1..-1].map{|(_, v)| v}.join("\t")}"
+ @results.each{|v, result|
+ rets = []
+ first_value = nil
+ s = adjusted_results(v, result){|r|
+ if first_value
+ if r == 0
+ rets << sprintf("%.3f", "Error")
+ else
+ rets << sprintf("%.3f", first_value/r)
+ end
+ else
+ first_value = r
+ end
+ }
+ output "#{v}#{s}\t#{rets.join("\t")}"
+ }
+ end
+
if @opt[:output]
output
output "Log file: #{@opt[:output]}"