Commit 804badac authored by allison.browne's avatar allison.browne

Improve peformance of utils InlineHash

Use the less expensive .to_a when a prefix is not passed.
parent e8e5f49f
...@@ -35,7 +35,12 @@ module Gitlab ...@@ -35,7 +35,12 @@ module Gitlab
def merge_keys(hash, prefix: nil, connector: '.') def merge_keys(hash, prefix: nil, connector: '.')
result = {} result = {}
base_prefix = prefix ? "#{prefix}#{connector}" : '' base_prefix = prefix ? "#{prefix}#{connector}" : ''
pairs = hash.map { |key, value| ["#{base_prefix}#{key}", value] } pairs =
if prefix
hash.map { |key, value| ["#{base_prefix}#{key}", value] }
else
hash.to_a
end
until pairs.empty? until pairs.empty?
key, value = pairs.shift key, value = pairs.shift
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
require 'fast_spec_helper' require 'fast_spec_helper'
describe Gitlab::Utils::SafeInlineHash do describe Gitlab::Utils::SafeInlineHash do
context '.merge_keys!' do describe '.merge_keys!' do
let(:source) { { 'foo' => { 'bar' => 'baz' } } } let(:source) { { 'foo' => { 'bar' => 'baz' } } }
let(:validator) { instance_double(Gitlab::Utils::DeepSize, valid?: valid) } let(:validator) { instance_double(Gitlab::Utils::DeepSize, valid?: valid) }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment