@Andrei1penguin1

Почему код ускоряется, когда должен замедляться?

Доброго времени суток, пишу FizzBuzz на Python и не понимаю одной вещи:
Почему этот код:
if i % 3 == 0:
    if i % 5 == 0:
        print("FizzBuzz")
elif i % 5 == 0:
    print("Buzz")
else:
    print("Fizz")

Работает на несколько секунд (итераций всего 100.000) быстрее вот этого:
if i % 3 == 0:
    if i % 5 == 0:
        print("FizzBuzz")
    else:
        print("Fizz")
else:
    print("Buzz")

Потому что по логике, когда число кратно только 3, должно совпасть первое условие, а потом перейти на ветку else, что, как я считаю, должно быть гораздо быстрее, чем выход из одного условия, проверка elif i % 5 == 0, и только потом else
Объясните пожалуйста, почему так происходит?
  • Вопрос задан
  • 127 просмотров
Решения вопроса 1
LaRN
@LaRN
Senior Developer
А результат работы у обоих вариантов одинаковый?
Первый вариант ничего не напечатает, если число кратно 3, а второй вариант для любого числа что-то печатает. В итоге второй вариант за счёт более частых вызовов функции print может работать дольше.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@galaxy
У вас код не эквивалентный.
В первом случае вы ничего не печатаете для i, которые делятся на 3, но не делятся на 5. Выводится (а основное время тут уходит на вывод) в первом случае где-то на 34% больше символов
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы