Почему функция max () намного медленнее при сравнении двух элементов с прямым сравнением с оператором if? - PullRequest
2 голосов
/ 23 мая 2019

Запустив приведенный ниже код, я получаю прямое сравнение с оператором if почти в 4 раза быстрее, чем при использовании функции max.

Я пытаюсь понять причину этого.

сравнение: 0,63 с, максимум: 2,3 с

import time

if _name_ == '_main_':
    sim = 10**7

    s = time.time()
    for _ in range(sim):
        if 1 > 2:
            pass
    res1 = time.time()-s

    s = time.time()
    for _ in range(sim):
        max(1, 2)
    res2 = time.time()-s

    print('comparison : {:.2}s, max : {:.2}s'.format(res1, res2))

1 Ответ

5 голосов
/ 23 мая 2019

, поскольку max включает в себя поиск в словаре имени функции, а затем вызов функции, тогда как прямой оператор < этого не делает.

max начинает становиться интересным по скорости, когда у вас естьбольше элементов.

Связанная / одинаковая разница в скорости:

...