Feature #3001
closedRuby stdlib: Benchmark::Tms #memberwise drops labels
Description
=begin
http://ruby-doc.org/stdlib/libdoc/benchmark/rdoc/classes/Benchmark/Tms.html#M000016-source
The implementation of Benchmark::Tms#memberwise only passes the computed time values when creating a new instance, e.g.:
Benchmark::Tms.new(utime.__send__(op, x),
stime.__send__(op, x),
cutime.__send__(op, x),
cstime.__send__(op, x),
real.__send__(op, x)
)
It would seem consistent (and more informative) if it also passed in the current label (especially since there's no other way to set it):
Benchmark::Tms.new(utime.__send__(op, x),
stime.__send__(op, x),
cutime.__send__(op, x),
cstime.__send__(op, x),
real.__send__(op, x),
label
)
Example:
t = Benchmark.measure("foo") { sleep 0.1 }
=> #<Benchmark::Tms:0x1011d03d8 @cstime=0.0, @total=0.0, @cutime=0.0, @label="foo", @stime=0.0, @real=0.100059986114502, @utime=0.0>
t2 = t / 2
=> #<Benchmark::Tms:0x1011be6d8 @cstime=0.0, @total=0.0, @cutime=0.0, @label=nil, @stime=0.0, @real=0.050029993057251, @utime=0.0>
=end
Updated by mame (Yusuke Endoh) over 14 years ago
=begin
Hi,
It would seem consistent (and more informative) if it also passed in the current label (especially since there's no other way to set it):
It is confusing to preserve the entirely same label, I guess.
If you really need the feature, a "derived" mark would be better,
such as "foo (/ 2)"
Viewed in this light, this is a new feature rather than bug.
So I move this ticket into Feature tracker.
--
Yusuke Endoh mame@tsg.ne.jp
=end
Updated by drbrain (Eric Hodel) over 13 years ago
- Category set to lib
Updated by Eregon (Benoit Daloze) over 13 years ago
Hi,
It would seem consistent (and more informative) if it also passed in the current label (especially since there's no other way to set it):
What about (tms1 + tms2)'s label ? Should it be "#{tms1.label} #{op} #{tms2.label}" ?
It seems consistent for operations with both Tms and others ("foo / 2").
But I'm not sure how this would be useful, could you give me an example ?
Maybe the need is somewhere else.
Updated by nahi (Hiroshi Nakamura) over 12 years ago
- Status changed from Open to Feedback
Updated by ko1 (Koichi Sasada) about 12 years ago
- Target version changed from 2.0.0 to 2.6
I changed target to next minor because there is no discussion on it.
No feedback?
Updated by cjeon (CHEOLHO JEON) over 8 years ago
Ernest Prabhakar wrote:
=begin
http://ruby-doc.org/stdlib/libdoc/benchmark/rdoc/classes/Benchmark/Tms.html#M000016-sourceThe implementation of Benchmark::Tms#memberwise only passes the computed time values when creating a new instance, e.g.:
Benchmark::Tms.new(utime.__send__(op, x), stime.__send__(op, x), cutime.__send__(op, x), cstime.__send__(op, x), real.__send__(op, x) )
It would seem consistent (and more informative) if it also passed in the current label (especially since there's no other way to set it):
Benchmark::Tms.new(utime.__send__(op, x), stime.__send__(op, x), cutime.__send__(op, x), cstime.__send__(op, x), real.__send__(op, x), label )
Example:
t = Benchmark.measure("foo") { sleep 0.1 }
=> #<Benchmark::Tms:0x1011d03d8 @cstime=0.0, @total=0.0, @cutime=0.0, @label="foo", @stime=0.0, @real=0.100059986114502, @utime=0.0>
t2 = t / 2
=> #<Benchmark::Tms:0x1011be6d8 @cstime=0.0, @total=0.0, @cutime=0.0, @label=nil, @stime=0.0, @real=0.050029993057251, @utime=0.0>
=end
any update on this? I think it should not drop labels...