Почему x * = y медленнее, чем x = x * y в Python? - PullRequest
1 голос
/ 15 марта 2020

Я пытаюсь оптимизировать некоторый код, который я написал в Python, и повсюду я предполагал, что в Python было бы более эффективно (или в худшем случае эквивалентно) написать x *= y вместо x = x * y. Но при использовании следующего теста basi c это не похоже на случай

import time

t0 = time.time()
x = 1.01
for i in range(1000000):
    x *= 1.000001
print(time.time() - t0)
# Outputs 0.1081240177154541

t0 = time.time()
x = 1.01
for i in range(1000000):
    x = x * 1.000001
print(time.time() - t0)
# Outputs 0.07818889617919922

Почему это так?

1 Ответ

2 голосов
/ 15 марта 2020

Я проводил следующие тесты:

def test1(x):
    for i in range(10000000):
        x *= 1.000001

def test2(x):
    for i in range(10000000):
        x = x * 1.000001


%timeit test1(1.01)
# 511 ms ± 25.9 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

%timeit test2(1.01)
# 591 ms ± 87.4 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

разница настолько мала, что вы можете сказать, что производительность такая же

, как показывают мои результаты (противоположность вашей вывод) результаты могут отличаться от одного станка к другому или от одного прогона к другому

...