Mam duży słownik, z którego muszę wielokrotnie wyszukiwać wartości. Moje klucze są liczbami całkowitymi, ale reprezentują etykiety, więc nie trzeba ich dodawać, odejmować itp. W końcu próbowałem ocenić czas dostępu między kluczem łańcucha a słownikiem kluczowym liczby całkowitej i tutaj jest wynik.Porównanie szybkości dostępu do słownika z kluczem całkowitoliczbowym względem klucza strunowego
from timeit import Timer
Dint = dict()
Dstr = dict()
for i in range(10000):
Dint[i] = i
Dstr[str(i)] = i
print 'string key in Dint',
print(Timer("'7498' in Dint", "from __main__ import Dint").timeit(100000000))
print 'int key in Dint',
print(Timer("7498 in Dint", "from __main__ import Dint").timeit(100000000))
print 'string key in Dstr',
print(Timer("'7498' in Dstr", "from __main__ import Dstr").timeit(100000000))
print 'int key in Dstr',
print(Timer("7498 in Dstr", "from __main__ import Dstr").timeit(100000000))
która produkuje niewielkie różnice pomiędzy przebiegi odtworzone za każdym razem:
string key in Dint 4.5552944017
int key in Dint 7.14334390267
string key in Dstr 6.69923791116
int key in Dstr 5.03503126455
nie dowodzi, że przy użyciu słownika ze strunami jak klucze jest szybsze niż z dostępem do liczb całkowitych jak klucze?
Byłoby raczej ładniej, gdybyś używał więcej niż jednego klucza. – Marcin