Скорость поиска хеша не зависит от количества элементов в хэше, поэтому версия, которая выполняет только один поиск хеша, выполнит часть операции поиска хеша быстрее, чем версия, которая выполняет три поиска хеша.Но, с другой стороны, версия с одним поиском должна объединить три ключа в одну строку, прежде чем их можно будет использовать в качестве комбинированного ключа;если эта строка является анонимной (например, $hash{"$a,$b,$c"}
), это, вероятно, потребует некоторых забавных вещей, таких как выделение памяти.В целом, я ожидал бы, что конкатенация будет достаточно быстрой, чтобы версия с одним поиском в большинстве случаев была быстрее, чем версия с тремя поисками, но единственный способ узнать, что быстрее в вашем случае, будетписать один и тот же код в обоих стилях и Benchmark разница.
Однако, как все уже говорили, это преждевременная и бесполезная микрооптимизация.Если вы не знаете, что у вас есть проблема с производительностью (или у вас есть исторические данные о производительности, которые показывают, что проблема развивается и будет вам в ближайшем будущем) и , вы профилировали свой код для определения того, что поиск хешаявляются причиной вашей проблемы с производительностью, вы тратите свое время на беспокойство по этому поводу.Поиск по хешу быстрый .Вряд ли это реальный тест, но:
$ time perl -e '$foo{bar} for 1 .. 1_000_000'
real 0m0.089s
user 0m0.088s
sys 0m0.000s
В этом тривиальном (и, по общему признанию, крайне ошибочном) примере я получил скорость, эквивалентную примерно 11 миллионам поисков хеша в секунду.За то время, которое вы потратили, задавая вопрос, ваш компьютер мог бы выполнить сотни миллионов, если не миллиардов , операций поиска в хешах.
Написать свои запросы в хэшах в любом стиле, который наиболее читаем и наиболееремонтопригоден в вашем приложении.Если вы попытаетесь оптимизировать его так быстро, насколько это возможно, потраченное впустую время программиста будет (на много!) Порядков больше, чем любое время обработки, которое вы когда-либо могли бы сэкономить при оптимизации.