Если я укоротю длину каждого имени ключа в хэше, будет ли это сокращать время чтения / записи этого хэша? - PullRequest
0 голосов
/ 13 декабря 2018

Я создаю большой хэш (~ 300 000 ключей и значений).Мне интересно, изменится ли время обработки для чтения / записи хэша, если у меня есть понятные человеку имена клавиш, например: :some_description_of_the_key, некоторые из которых имеют длину около 30 символов.

Или было бы выгодно сокращать ключи до последовательной системы счисления (:0_1, :1_1 в качестве элементарного примера)?

Гипотетическим преимуществом является то, что каждая клавиша будет иметь значительно более короткую длину символа.

1 Ответ

0 голосов
/ 13 декабря 2018

Короче говоря, это уменьшит размер, но вряд ли улучшит производительность, если ваш ключ в настоящее время является строкой, числом или символом, а не объектом.Если ваш ключ - модель или другой объект, я рекомендую изменить это, так как это увеличивает накладные расходы.Если мы говорим о разнице между:

{ my_very_long_key_or_something: “”}

Vs

{ 1447 => “” }

Тогда вы сохраняете количество байтов, равное количеству сокращенных символов.Таким образом, для записей 300 тыс., Сохранение 15 символов каждый будет 4,29 МБ.Если вы имеете дело с нехваткой памяти, и такая экономия является преимуществом, сделайте это.Я действительно рекомендую раскрыть ключи, чтобы сделать его понятным.

Опять же, при условии, что ваш ключ не является объектом;Ваши проблемы с чтением / записью, скорее всего, связаны с размером значения (для объектов или вложенных хэшей) или обработкой, которую вы применяете к хешу.Вы можете попробовать сравнительный анализ для сравнения производительности:

Benchmark.ms { my_hash.process }
...