Czy zawsze szybsze jest użycie ciągu jako klucza w dyktacie?
Na tostrona, Widzę coś interesującego:
Zauważ, że istnieje szybka ścieżka dla dykt, które (w praktyce) dotyczą tylko klawiszy str; nie wpływa to na złożoność algorytmiczną, ale może znacząco wpływać na czynniki stałe: jak szybko kończy się typowy program.
Co to dokładnie znaczy?
Czy to oznacza, że użycie łańcucha jako klucza jest zawsze szybsze?
Jeśli tak, to dlaczego?
Aktualizacja:
Dziękujemy za sugestie dotyczące optymalizacji! Ale bardziej interesuje mnie prosta prawda niż to, czy powinniśmy czynić optymalizację.
Aktualizacja 2:
Dzięki za wspaniałe odpowiedzi, przytoczę treść zpołączyć dostarczone przez @DaveWebb tutaj:
„...
ma_lookup jest początkowo ustawiony nalookdict_string funkcja (zmiana nazwy nalookdict_unicode w wersji 3.0), która zakłada, że zarówno klucze w słowniku, jak i poszukiwany klucz są standardowymi PyStringObject. Jest wtedy w stanie wykonać kilka optymalizacji, takich jak łagodzenie różnych kontroli błędów, ponieważ porównywanie ciągów do ciągu nigdy nie powoduje wyjątków. Nie ma również potrzeby porównywania obiektów bogatych, co oznacza, że unikamy dzwonieniaPyObject_RichCompareBooli zawsze używaj_PyString_Eq bezpośrednio.
... "
Ponadto, jeśli chodzi o liczby eksperymentów, myślę, że wielkość różnicy będzie jeszcze większa, jeśli nie będzie konwersji między ciągami