Project

General

Profile

Actions

Feature #3001

open

Ruby stdlib: Benchmark::Tms #memberwise drops labels

Added by DrErnie (Ernest Prabhakar) about 11 years ago. Updated almost 5 years ago.

Status:
Feedback
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:28908]

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 }
=> #
t2 = t / 2
=> #
=end

Actions #1

Updated by mame (Yusuke Endoh) about 11 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

Actions #2

Updated by mame (Yusuke Endoh) about 11 years ago

  • Target version set to 2.0.0

=begin

=end

Updated by drbrain (Eric Hodel) almost 10 years ago

  • Category set to lib

Updated by Eregon (Benoit Daloze) almost 10 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 9 years ago

  • Status changed from Open to Feedback

Updated by ko1 (Koichi Sasada) over 8 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 5 years ago

Ernest Prabhakar wrote:

=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 }
=> #
t2 = t / 2
=> #
=end

any update on this? I think it should not drop labels...

Actions

Also available in: Atom PDF