Всегда ли быстрее использовать строку как ключ в dict?
На этомстраницаВижу что-то интересное
Note that there is a fast-path for dicts that (in practice) only deal with str keys; this doesn't affect the algorithmic complexity, but it can significantly affect the constant factors: how quickly a typical program finishes.
Так что именно это значит?
Означает ли это, что использование строки в качестве ключа всегда быстрее?
Если да, то почему?
Update:
Спасибо за предложения по оптимизации! Но на самом деле меня больше интересует простая истина, чем то, следует ли нам проводить оптимизацию или нет.
Update 2:
Спасибо за отличные ответы. Я процитирую содержаниессылка на сайт предоставлено @DaveWebb здесь:
" ...
ma_lookup изначально установлен наlookdict_string функция (переименована вlookdict_unicode в версии 3.0), в которой предполагается, что и ключи в словаре, и ключ, который ищется, являются стандартными PyStringObject. Затем он может выполнить несколько оптимизаций, например, смягчить различные проверки ошибок, поскольку сравнение строк и строк никогда не вызывает исключений. Также нет необходимости в богатом сравнении объектов, что означает, что мы избегаем вызоваPyObject_RichCompareBoolи всегда использовать_PyString_Eq непосредственно.
... "
Кроме того, для чисел эксперимента, я думаю, что разница будет еще больше, если нет преобразования в строку