Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как влияет большое количество условий в коде на производительность кода в целом?

ФермаКактусов Высший разум (184420), открыт 1 неделю назад
3 ответа
Редис Александрович Оракул (77672) 1 неделю назад
Чем больше проверок, тем медленнее код, это очевидно
ФермаКактусовВысший разум (184420) 1 неделю назад
это правило так же допустимо если ни одно условие не сталкивается с условием для выполнения?
Редис Александрович Оракул (77672) ФермаКактусов, немного не понял вопрос
del Мудрец (19241) 1 неделю назад
Проверка условия это такая же операция над операндом как и другие операции.

Такие операции не всегда имеют смысл например - if true then ..... в таком случае условие всегда будет истинным и компилятор еще на этапе компиляции может убрать операцию проверки условия из компилируемой программы. т.е. добавление любого числа бессмысленных инструкций никакого влияния на итоговую программу не окажет.

В случае если операция имеет смысл то операция проверки на условное ветвление выполняется за 1 - 2 такта процессора.
У процессора обычно есть специальный флаг пропуска следующей инструкции из очереди инструкций, операция проверки условия просто устанавливает этот флаг если флаг установлен то происходит переход если не установлен то инструкция перехода просто пропускается. точно также с помощью установки флага работает и переполнение и проверка исключений.

Современные компьютеры умеют SIMD это когда за один такт процессора происходят десятки проверок на истинность условия. Но такое возможно только над чистыми не пересекающимися данными т.е. потенциально конструкции switch .. case .. могут работать гораздо быстрее if .. else .. . но в реальности это крайне редкие случаи а компиляторы и без явного указания умеют оптимизировать логику для SIMD.
Похожие вопросы