Нет, если вы не используете виртуальные функции.
Редактировать: Если вам нужен динамизм во время выполнения, то да, виртуальные функции работают быстрее или быстрее, чем оператор if-else
, созданный вручную. Однако, если вы укажете ключевое слово virtual
перед методом, но на самом деле полиморфизм вам не понадобится, вы будете платить ненужные накладные расходы. Компилятор не будет оптимизировать его во время компиляции. Я просто указываю на это, потому что это одна из особенностей C ++, которая нарушает «принцип нулевых накладных расходов» (цитируя Страуструпа).
В качестве примечания, так как вы упоминаете интенсивное использование математики fp:
Следующие gcc-флаги могут помочь вам ускорить процесс (я уверен, что есть эквивалентные флаги для визуального C ++, но я им не пользуюсь):
-mfpmath=sse
,
-ffast-math
и
-mrecip
( Последние два «слегка опасны», что означает, что они могут дать вам странные результаты в крайних случаях в обмен на скорость.Первый снижает точность на бит - у вас есть 64-битные двойные вместо 80-битных - но эта дополнительная точность часто не нужна.) Эти флаги одинаково хорошо работают для компиляторов C и C ++.
В зависимости от вашего процессора, вы также можете обнаружить, что имитация true
INFINITY
с большим, но не бесконечным значением дает вам хороший прирост скорости. Это потому, что процессор должен обрабатывать true
INFINITY
как особый случай.