Я попытался провести сравнение чтения в словаре и в массиве numpy.
Я был уверен, что массив numpy будет быстрее, так как, когда я делаю numpy_array[i]
, ему просто нужно проверить i-е слово после начала массива, но при выполнении dictionary[i]
будет использоваться ha sh вычисление и использование более сложной структуры данных.
Однако я пробовал это с% timeit в i python, со словарем и массивом, одинаковыми, и это мои результаты:
In [161]: def getter(obj, n): return obj[n]
In [162]: %timeit getter(dictionary, 6)
The slowest run took 10.84 times longer than the fastest. This could mean that an intermediate result is being cached.
10000000 loops, best of 3: 110 ns per loop
In [163]: %timeit getter(numpyarray, 6)
The slowest run took 27.87 times longer than the fastest. This could mean that an intermediate result is being cached.
1000000 loops, best of 3: 180 ns per loop
Как вы можете это объяснить?