Структуры dict/map на основе хэш-таблицы обеспечивают время поиска O(1)
. Тем не менее, я продолжаю видеть, что в Elixir поиск подходящей функции голова быстрее, чем поиск чего-то на карте.
Например, Elixir String.Unicode
компилирует список символов Юникода во многие главы функций, поэтому задавая вопрос: "Что такое верхняя версия é" ответил, найдя головку функции для upcase
, которая ожидает "é".
Я не знаю, почему это было бы быстрее или более эффективно с памятью, чем с одной головкой upcase
, которая просматривает "é" на карте.
Аналогично, когда показано, как построить библиотеку I18n в "Metaprogramming Elixir", Крис МакКорд дает каждому ключу трансляции свою собственную функциональную голову и говорит:
"Генерируя головы функций для каждого преобразования трансляции, мы снова позволяем виртуальной машине взять верх для быстрого поиска".
Карты в Elixir не обеспечивают поиск O (1)? Является ли поиск подходящей функции O (1)? Почему вы хотите собрать статический список для многих головоломок, а не просто сохранить его на карте?