= (1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,2*2)
pass
def bar():
s = 2 * 2
for i in range(100):
m = (1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,s)
pass
foo_time = timeit.timeit(foo, number=100)
print('foo: ' + str(int(foo_time * 1000000)) + ' microseconds')
bar_time = timeit.timeit(bar, number=100)
print('bar: ' + str(int(bar_time * 1000000)) + ' microseconds')
print('diff: ' + str(max(foo_time,bar_time)/min(foo_time,bar_time)))
Вывод
foo: 449 microseconds
bar: 14599 microseconds
diff: 32.49217498130354
Почему между ними такая большая разница в выполнении?
Так pass не нужен тут
В первом случае у тебя константа везде одна и та же присваивается. Во втором - каждый раз новый кортеж создаётся. Но это не точно и не гарантировано
Понятно. Спасибо
Обсуждают сегодня