summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorKaĆ­que Kandy Koga <kaiquekandykoga@gmail.com>2022-08-08 14:53:05 -0300
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2024-11-08 11:32:30 +0900
commit9523f53465bff9e77dfeba82526112e2de91bdb4 (patch)
treeaac728be91e6f7be1085d47470808ed02a166968 /lib
parentb56b70a373753fd5c6d1b6df911342c8d0138695 (diff)
[ruby/benchmark] Adjust ljust Benchmark#bm with labels was not using the highest length among the labels to adjust the correct ljust. Instead of printing the result during the report generation, now it is waiting to print the result once it is generated.
Benchmark.bm { |x| x.item("aaaa") { 1 } x.item("aaaaaaaa") { 0 } } After user system total real aaaa 0.000005 0.000002 0.000007 ( 0.000003) aaaaaaaa 0.000001 0.000001 0.000002 ( 0.000002) Before user system total real aaaa 0.000005 0.000001 0.000006 ( 0.000003) aaaaaaaa 0.000002 0.000001 0.000003 ( 0.000003) https://github.com/ruby/benchmark/commit/3e74533ead
Diffstat (limited to 'lib')
-rw-r--r--lib/benchmark.rb14
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/benchmark.rb b/lib/benchmark.rb
index 5072bdc2f3..6fdc26c482 100644
--- a/lib/benchmark.rb
+++ b/lib/benchmark.rb
@@ -173,9 +173,15 @@ module Benchmark
label_width ||= 0
label_width += 1
format ||= FORMAT
- print ' '*label_width + caption unless caption.empty?
report = Report.new(label_width, format)
results = yield(report)
+
+ print " " * report.width + caption unless caption.empty?
+ report.list.each { |i|
+ print i.label.to_s.ljust(report.width)
+ print i.format(report.format, *format)
+ }
+
Array === results and results.grep(Tms).each {|t|
print((labels.shift || t.label || "").ljust(label_width), t.format(format))
}
@@ -380,16 +386,16 @@ module Benchmark
# formatting rules.
#
def item(label = "", *format, &blk) # :yield:
- print label.to_s.ljust(@width)
+ w = label.to_s.length
+ @width = w if @width < w
@list << res = Benchmark.measure(label, &blk)
- print res.format(@format, *format)
res
end
alias report item
# An array of Benchmark::Tms objects representing each item.
- attr_reader :list
+ attr_reader :width, :format, :list
end