Feature #8707
Updated by nobu (Nobuyoshi Nakada) over 1 year ago
Currently, `{}.reverse_each` {}.reverse_each calls `Enumerable#reverse_each`. Enumerable#reverse_each. It will make array and its size can be large. I made `Hash#reverse_each` Hash#reverse_each to avoid array creation and performance improvement. benchmark: ```ruby 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) ```