From: Charlie Somerville Date: 2013-07-31T14:24:54+09:00 Subject: [ruby-core:56277] Re: [ruby-trunk - Feature #8707][Feedback] Hash#reverse_each Matz: This is quite a significant performance improvement and therefore I think it is worthwhile. On 30/07/2013, at 20:48, "matz (Yukihiro Matsumoto)" 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/ >