Пожалуйста, рассмотрите следующий фрагмент кода:
void error_handling();
bool method_impl();
bool method()
{
const bool res = method_impl();
if (res == false) {
error_handling();
return false;
}
return true;
}
Я знаю, что method_impl()
вернет true
99.999% (да, три десятичных знака) того времени, но мой компилятор этого не делает. method()
является частично критическим с точки зрения потребления времени.
- Должен ли я переписать
method()
(и сделать его менее читаемым), чтобы гарантировать, что скачок может произойти только тогда, когдаmethod_impl()
возвращаетfalse
? Если да, то как? - Должен ли я позволить компилятору выполнить эту работу для меня?
- Должен ли я позволить предсказанию ветки моего процессора выполнять эту работу для меня?