Я на базовом уровне с C ++, поэтому извините, если я упускаю что-то очевидное.
Я планирую программу, которая может работать в двух режимах.Режим, в котором он работает, определяется флагом в файле конфигурации, который программа читает при первом запуске.После прочтения этого файла конфигурации программа перейдет в цикл, который будет повторяться миллионы раз.
В одной точке цикла код выполняет разные действия в зависимости от того, в каком режиме он был установлен из файла конфигурации.
Очевидно, я мог бы использовать IF.Если в режиме 1 выполнить действие1, то в другом случае, если в режиме 2 выполнить действие2.Но я хотел бы сэкономить время, которое займет IF (имея в виду, что это произойдет миллионы раз).
Для этого я подумал о том, чтобы поместить actions1 и actions2 в их собственные функции и использовать указатель на функцию.
Затем я могу установить указатель на функцию, так как файл конфигурации читается перед циклом, и просто использовать этот указатель вместо IF.
Но проблема в том, что когда они помещаются в функции actions1и actions2 имеют разные аргументы, и поэтому мне нужно два указателя на функции, чтобы учесть это значение. Я снова нуждаюсь в IF.
Я мог бы решить эту проблему, используя глобальные переменные, но я бы не стал.Кто-нибудь может предложить способ решить эту проблему?
Или я не должен беспокоиться о стоимости миллионов IF, увидит ли компилятор, что решение выполнено, и не будет делать его снова и снова?
РЕДАКТИРОВАТЬ: Спасибо за ваши ответы.Я сделал тест, используя этот очень простой код:
int i = 2
int p = 10;
for (int f = 0; f<900000000; f ++) </p>
{
if (p == 10)
i = p + f;
}
На самом деле он работает на 20% быстрее, если есть, чем когда я его комментирую.Я предполагаю, что это должно быть ветвь hpredictor в действии, но я до сих пор не знаю, почему это быстрее, чем когда no вообще используется.