У меня есть процесс, который проходит через два списка, один из которых относительно велик, а другой значительно меньше.
Пример:
larger_list = list(range(15000))
smaller_list = list(range(2500))
for ll in larger_list:
for sl in smaller_list:
pass
Я масштабировал размер списков для проверки производительности, и я заметил, что есть приличная разница между тем, какой список зацикливается первым.
import timeit
larger_list = list(range(150))
smaller_list = list(range(25))
def large_then_small():
for ll in larger_list:
for sl in smaller_list:
pass
def small_then_large():
for sl in smaller_list:
for ll in larger_list:
pass
print('Larger -> Smaller: {}'.format(timeit.timeit(large_then_small)))
print('Smaller -> Larger: {}'.format(timeit.timeit(small_then_large)))
>>> Larger -> Smaller: 114.884992572
>>> Smaller -> Larger: 98.7751009799
На первый взгляд они выглядят одинаково - однако разница между двумя функциями составляет 16 секунд.
Почему это?