В другом вопросе в принятом ответе предлагалось заменить (очень дешевый) оператор if в коде Python на блок try / except для повышения производительности.
Если оставить в стороне проблемы со стилем кодирования, и если предположить, что исключение никогда не запускается, насколько сильно отличается (с точки зрения производительности) наличие обработчика исключений по сравнению с отсутствием его и условием сравнения с нулем?
Ответы:
Почему бы вам не измерить это с помощью
timeit
модуля ? Таким образом вы сможете увидеть, подходит ли он для вашего приложения.Хорошо, я только что попробовал следующее:
Результат:
Итак, как и ожидалось, отсутствие обработчика исключений немного быстрее (но взрывается вам в лицо, когда возникает исключение) и
try/except
быстрее, чем явное,if
пока условие не выполняется.Но все это в одном порядке и вряд ли будет иметь значение. Только если условие действительно выполняется,
if
версия будет значительно быстрее.источник
try/except
быстрее, чемif a != 0
Ответ на этот вопрос можно найти в FAQ по дизайну и истории :
источник
Этот вопрос вводит в заблуждение. Если вы предполагаете, что исключение никогда не запускается, ни один из них не является оптимальным кодом.
Если вы предполагаете, что исключение запускается как часть состояния ошибки, вы уже находитесь за пределами области, требующей оптимального кода (и, вероятно, вы все равно не обрабатываете его на таком мелкомасштабном уровне).
Если вы используете исключение как часть стандартного потока управления - а это метод Pythonic «просить прощения, а не разрешения» - то исключение будет инициировано, и его стоимость будет зависеть от типа исключения, типа if , и в какой процент времени, по вашему мнению, происходит исключение.
источник