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/ >> > >