1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

driver.rb: MarkDown table

* benchmark/driver.rb (show_results): support MarkDown style table
  format output.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49846 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2015-03-05 00:14:02 +00:00
parent fb5a0b68a8
commit 589436f417

View file

@ -81,6 +81,7 @@ class BenchmarkDriver
@loop_wl1 = @loop_wl2 = nil @loop_wl1 = @loop_wl2 = nil
@ruby_arg = opt[:ruby_arg] || nil @ruby_arg = opt[:ruby_arg] || nil
@opt = opt @opt = opt
@name_width = 4 # "name".size
# [[name, [[r-1-1, r-1-2, ...], [r-2-1, r-2-2, ...]]], ...] # [[name, [[r-1-1, r-1-2, ...], [r-2-1, r-2-2, ...]]], ...]
@results = [] @results = []
@ -118,6 +119,12 @@ class BenchmarkDriver
end end
def show_results def show_results
case @opt[:format]
when :tsv
when :markdown
markdown = true
end
output output
if @verbose if @verbose
@ -144,20 +151,27 @@ class BenchmarkDriver
output "minimum results in each #{@repeat} measurements." output "minimum results in each #{@repeat} measurements."
end end
tabs = @name_width / 8
sep = markdown ? "\t|" : "\t"
output "Execution time (sec)" output "Execution time (sec)"
output "name\t#{@execs.map{|(_, v)| v}.join("\t")}" output if markdown
output ["name", @execs.map{|(_, v)| v}].join(sep)
output "-"*(8*tabs+8)+"|------:"*@execs.size if markdown
@results.each{|v, result| @results.each{|v, result|
rets = [] rets = []
s = adjusted_results(v, result){|r| s = adjusted_results(v, result){|r|
rets << sprintf("%.3f", r) rets << sprintf("%.3f", r)
} }
output "#{v}#{s}\t#{rets.join("\t")}" v += s if s
output [v, rets].join(sep)
} }
if @execs.size > 1 if @execs.size > 1
output output
output "Speedup ratio: compare with the result of `#{@execs[0][1]}' (greater is better)" output "Speedup ratio: compare with the result of `#{@execs[0][1]}' (greater is better)"
output "name\t#{@execs[1..-1].map{|(_, v)| v}.join("\t")}" output if markdown
output ["name", @execs[1..-1].map{|(_, v)| v}].join(sep)
output "-"*(8*tabs+8)+"|------:"*(@execs.size-1) if markdown
@results.each{|v, result| @results.each{|v, result|
rets = [] rets = []
first_value = nil first_value = nil
@ -172,7 +186,8 @@ class BenchmarkDriver
first_value = r first_value = r
end end
} }
output "#{v}#{s}\t#{rets.join("\t")}" v += s if s
output [v, rets].join(sep)
} }
end end
@ -232,6 +247,7 @@ class BenchmarkDriver
output output
end end
@name_width = name.size if name.size > @name_width
result = [name] result = [name]
result << @execs.map{|(e, v)| result << @execs.map{|(e, v)|
(0...@repeat).map{ (0...@repeat).map{
@ -275,7 +291,8 @@ if __FILE__ == $0
:dir => File.dirname(__FILE__), :dir => File.dirname(__FILE__),
:repeat => 1, :repeat => 1,
:output => "bmlog-#{Time.now.strftime('%Y%m%d-%H%M%S')}.#{$$}", :output => "bmlog-#{Time.now.strftime('%Y%m%d-%H%M%S')}.#{$$}",
:raw_output => nil :raw_output => nil,
:format => :tsv,
} }
parser = OptionParser.new{|o| parser = OptionParser.new{|o|
@ -306,6 +323,9 @@ if __FILE__ == $0
o.on('--rawdata-output [FILE]', 'output rawdata'){|r| o.on('--rawdata-output [FILE]', 'output rawdata'){|r|
opt[:rawdata_output] = r opt[:rawdata_output] = r
} }
o.on('-f', '--format={tsv,markdown}', 'output format', [:tsv, :markdown]){|r|
opt[:format] = r
}
o.on('-v', '--verbose'){|v| o.on('-v', '--verbose'){|v|
opt[:verbose] = v opt[:verbose] = v
} }