Этот вопрос является своего рода дизайнерским.В основном я часто получаю десять, чтобы получить функцию, которая выполняет высокие вычисления, но где-то посередине она имеет оператор if, который сильно влияет на производительность всей программы.
Рассмотрим этот пример:
void f(bool visualization)
{
while(...)
{
// Many lines of computation
if (visualization)
{
// do the visualization of the algorithm
}
// More lines of computation
}
}
Проблема в этом примере заключается в том, что если для bool visualization
задано значение false, то, я думаю, программа будет проверять, верно ли это на каждой итерации цикла.
Единственное решение - просто создать две отдельные функции с визуализацией и без нее:
void f()
{
while(...)
{
// Many lines of computation
// More lines of computation
}
}
void f_with_visualization()
{
while(...)
{
// Many lines of computation
// do the visualization of the algorithm
// More lines of computation
}
}
Так что теперь у меня нет if
проверок.Но это создает другую проблему: беспорядок в моем коде, и это нарушение DRY.
Мой вопрос здесь: есть ли способ сделать это лучше, не копируя код?Или, может быть, оптимизатор компилятора C ++ проверит, какую версию функции я хочу выполнить (с bool = true или bool = false), а затем создаст фиктивные функции без этой if
проверки сам (как те, что я создал сам)?