From: "Martin J. Dürst" <duerst@...>
Date: 2013-07-31T16:21:37+09:00
Subject: [ruby-core:56281] Re: [ruby-trunk - Feature #8707][Feedback] Hash#reverse_each

Hello Charlie,

On 2013/07/31 14:24, Charlie Somerville wrote:
> Matz: This is quite a significant performance improvement and therefore I think it is worthwhile.

Only if the new method is actually used in practice.
That's why Matz is asking for use cases.

Regards,   Martin.

> On 30/07/2013, at 20:48, "matz (Yukihiro Matsumoto)"<matz@ruby-lang.org>  wrote:
>
>>
>> Issue #8707 has been updated by matz (Yukihiro Matsumoto).
>>
>> Status changed from Open to Feedback
>>
>> Do we really need it?  What is use-cases?
>>
>> Matz.
>>
>> ----------------------------------------
>> Feature #8707: Hash#reverse_each
>> https://bugs.ruby-lang.org/issues/8707#change-40769
>>
>> Author: Glass_saga (Masaki Matsushita)
>> Status: Feedback
>> Priority: Normal
>> Assignee:
>> Category: core
>> Target version: current: 2.1.0
>>
>>
>> Currently, {}.reverse_each calls Enumerable#reverse_each.
>> It will make array and its size can be large.
>> I made Hash#reverse_each to avoid array creation and performance improvement.
>>
>> benchmark:
>>
>> require "benchmark"
>>
>> Size = 10000
>> HASH = Hash[*Array.new(Size) {|i| [i, true] }.flatten]
>>
>> Benchmark.bmbm do |x|
>>   x.report("Hash#reverse_each") do
>>     300.times do
>>       HASH.reverse_each {|a, b|}
>>     end
>>   end
>> end
>>
>> result:
>>
>> trunk(r42256):
>> Rehearsal -----------------------------------------------------
>> Hash#reverse_each   1.210000   0.000000   1.210000 (  1.207964)
>> -------------------------------------------- total: 1.210000sec
>>
>>                         user     system      total        real
>> Hash#reverse_each   0.950000   0.000000   0.950000 (  0.951069)
>>
>> proposal:
>> Rehearsal -----------------------------------------------------
>> Hash#reverse_each   0.600000   0.000000   0.600000 (  0.600242)
>> -------------------------------------------- total: 0.600000sec
>>
>>                         user     system      total        real
>> Hash#reverse_each   0.450000   0.000000   0.450000 (  0.459006)
>>
>>
>> --
>> http://bugs.ruby-lang.org/
>>
>
>