提交 6751b103 编写于 作者: L lvl0nax

Perfomance fix for Enumerable#index_by

Calculating -------------------------------------
              before    34.731k i/100ms
               after    48.206k i/100ms
-------------------------------------------------
              before    508.451k (± 1.2%) i/s -      2.570M
               after    720.068k (± 0.9%) i/s -      3.615M
Comparison:
               after:   720067.6 i/s
              before:   508451.1 i/s - 1.42x slower
上级 b6429b87
......@@ -34,7 +34,9 @@ def sum(identity = nil, &block)
# => { "Chade- Fowlersburg-e" => <Person ...>, "David Heinemeier Hansson" => <Person ...>, ...}
def index_by
if block_given?
Hash[map { |elem| [yield(elem), elem] }]
result = {}
each { |elem| result[yield(elem)] = elem }
result
else
to_enum(:index_by) { size if respond_to?(:size) }
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册