Feature #3001
closedRuby stdlib: Benchmark::Tms #memberwise drops labels
Description
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) about 15 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 [email protected]
=end
Updated by drbrain (Eric Hodel) almost 14 years ago
- Category set to lib
Updated by Eregon (Benoit Daloze) almost 14 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) about 13 years ago
- Status changed from Open to Feedback
Updated by ko1 (Koichi Sasada) over 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) almost 9 years ago
Ernest Prabhakar wrote:
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
any update on this? I think it should not drop labels...