[#41908] [Backport93 - Backport #5844][Open] Can't install ruby-debug-base19 — Brian Osborne <bosborne11@...>
[#41916] Proposal: Bitmap Marking GC — Narihiro Nakamura <authornari@...>
Hi.
> And, GC is a little bit slower. But, I think it's in acceptable range.
Narihiro Nakamura <authornari@gmail.com> wrote:
> Narihiro Nakamura <authornari@gmail.com> wrote:
[#41934] feature request: marshallable proc's — Roger Pack <rogerdpack2@...>
Every so often I wish I could do something like
On 2012年01月06日 08:54, Roger Pack wrote:
What should happen on the following code?
[#41979] [ruby-trunk - Bug #5865][Open] Exception#== should return false if the classes differ — Hiro Asari <asari.ruby@...>
Hi,
On Mon, Jan 9, 2012 at 12:43, Yukihiro Matsumoto <matz@ruby-lang.org> wrote=
[#42003] [ruby-trunk - Bug #5871][Open] regexp \W matches some word characters when inside a case-insensitive character class — Gareth Adams <gareth@...>
[#42016] [ruby-trunk - Feature #5873][Open] Adopt FFI over DL — Heesob Park <phasis@...>
On Tue, Jan 10, 2012 at 10:01:26PM +0900, Heesob Park wrote:
Hi,
> To remove original DL completely, we have to bundle libffi itself
[#42042] RUBY 2 RCR: remove Thread#raise — Roger Pack <rogerdpack2@...>
Hello.
Roger Pack <rogerdpack2@gmail.com> wrote:
[#42049] [ruby-trunk - Bug #5877][Open] Poor performance of initial and final UTF-8 substrings — Nathan Weizenbaum <nex342@...>
[#42063] [ruby-trunk - Bug #5884][Open] Float::NAN and 0.0/0.0 is represented differently when packed with 'g' — Hiro Asari <asari.ruby@...>
[#42080] [ruby-trunk - Bug #5887][Open] The documentation of Module.constants is incorrect — Shugo Maeda <redmine@...>
[#42085] [ruby-trunk - Bug #5888][Open] JSON unittest fails — Vit Ondruch <v.ondruch@...>
[#42093] Backport93 help needed for a few Windows requests? — Jon <jon.forums@...>
Currently the following Windows-specific backport requests to ruby_1_9_3 remain unassigned:
[#42113] [ruby-trunk - Feature #5893][Open] named return,next... — Ondrej Bilka <neleai@...>
On Fri, Jan 13, 2012 at 7:21 PM, Ondrej Bilka <neleai@seznam.cz> wrote:
On Fri, Jan 13, 2012 at 11:11:28PM +0900, Anurag Priyam wrote:
[#42139] [ruby-trunk - Feature #5898][Open] raise and Exception#initialize — Thomas Sawyer <transfire@...>
[#42149] [ruby-trunk - Feature #5899][Open] chaining comparsions. — Ondrej Bilka <neleai@...>
[#42160] [ruby-trunk - Bug #5902][Open] Array#join with an unused, infected separator may or may not infect the result — John Firebaugh <john.firebaugh@...>
[#42164] [ruby-trunk - Feature #5903][Open] Optimize st_table (take 2) — Yura Sokolov <funny.falcon@...>
[#42189] [ruby-trunk - Bug #5914][Open] Calling extend with an anonymous module requires use of parentheses — Mark Somerville <mark@...>
[#42194] [ruby-trunk - Bug #5915][Open] Array#join with explicit nil should not use $, — John Firebaugh <john.firebaugh@...>
[#42222] [ruby-trunk - Bug #5925][Open] Lazy initialization is not thread safe. — Xuân Baldauf <xuan--2009--xbaldauf--redmine.ruby-lang.org@...>
[#42235] [ruby-trunk - Bug #5931][Open] Random SEGV during execution on YARD specs — Vit Ondruch <v.ondruch@...>
[#42246] Fwd: RCR String#{last, first} — Roger Pack <rogerdpack2@...>
Hello.
[#42256] [ruby-trunk - Feature #5945][Open] Add the ability to mark a at_exit as process-local. — Robert Gleeson <rob@...>
[#42257] [Backport93 - Backport #5942][Open] Backport r34309-34310 r34312-32414 — Yura Sokolov <funny.falcon@...>
[#42285] Why Ruby 1.9 GUI hangs if i do any intensive computation in separate Ruby thread? — Grigory Petrov <grigory.v.p@...>
Hello
the GIL is *not* supposed to lift if some threads enters native code...
[ruby-core:41907] [ruby-trunk - Feature #5809] Benchmark#bm: remove the label_width parameter
Issue #5809 has been updated by Yui NARUSE.
Benoit Daloze wrote:
> My suggestion is to improve Benchmark#benchmark (and so #bm) by removing
> the label_width argument, which I think is unnecessary (and so calculate
> it).
>
> I would keep compatibility (use the width if given), but remove the feature
> of returning the time directly at #report, which is not done for #bmbm
> anyway.
>
> Do you think it is fine to remove that (as far as I know) unused feature?
> Or should I absolutely keep it (although it is inconsistent and duplicate
> the code) ?
Breaking compatibility makes the change hard to accept even if it seems not be used.
Keep and deprecate old method, and create new method is better.
----------------------------------------
Feature #5809: Benchmark#bm: remove the label_width parameter
https://bugs.ruby-lang.org/issues/5809
Author: Benoit Daloze
Status: Open
Priority: Normal
Assignee:
Category: lib
Target version:
Hello,
I would like to keep on improving the benchmark library.
Feature #4197 was mostly a clean-up, this intend to improve the existing methods.
First, I would like to make Benchmark#bm smarter.
I think than having to specify the maximum width of the labels as an argument is not natural, and probably not the best API.
An easy way to calculate the maximum width is to store all blocks and labels and run them after the #bm block is yielded.
That's the way #bmbm does it (although some people don't know #bmbm can calculate the width itself).
It would also avoid the duplication between the Report and Job classes, and make #bm more consistent with #bmbm.
There is however a good reason it is not done this way:
It lets #report return immediately the Benchmark::Tms, which can then be assigned to a variable, and be used to easily display the total, average, etc:
Benchmark.bm(7, ">total:", ">avg:") do |x|
tf = x.report("for:") { for i in 1..n; a = "1"; end }
tt = x.report("times:") { n.times do ; a = "1"; end }
[tf+tt, (tf+tt)/3]
end
# =>
user system total real
for: 0.000000 0.000000 0.000000 ( 0.000054)
times: 0.000000 0.000000 0.000000 ( 0.000027)
>total: 0.000000 0.000000 0.000000 ( 0.000081)
>avg: 0.000000 0.000000 0.000000 ( 0.000027)
I am not sure this is worth having to give the width.
I think this feature is very rarely used (I actually never saw a code using it, except the code in the documentation). Please show me if I'm wrong.
There are some workarounds.
First, I made Benchmark#benchmark returns the times of the #reports (an Array of Tms).
One can then easily store the results of #bm and print them (however it will not indent them automatically, but that could be fixed).
tf,tt = Benchmark.bm { ... }
puts ">total: #{(tf+tt)}"
puts ">avg: #{(tf+tt)/3}"
Second, it is actually possible to support the same feature, even when the #report blocks are executed after.
This is done by creating "delay-able"/lazy objects, which remember the calls, and make the real calls by calling #compute on them.
Benchmark#benchmark could then execute them when the #bm block is yielded, and it would be transparent to the user (except if he prints the result of #report inside the #bm block).
The second is not small to implement, and might not belong to the benchmark library, but could be useful in general. It also adds some significant complexity.
What do you think?
--
http://redmine.ruby-lang.org