Использование bools в расчетах, чтобы избежать веток
Вот'Небольшое любопытство микрооптимизации, которое я придумал:
struct Timer {
bool running{false};
int ticks{0};
void step_versionOne(int mStepSize) {
if(running) ticks += mStepSize;
}
void step_versionTwo(int mStepSize) {
ticks += mStepSize * static_cast(running);
}
};
Кажется, что два метода практически делают одно и то же. Вторая версия избегает ветвления (и, следовательно, быстрее, чем первая версия), или любой компилятор может выполнить такую оптимизацию?-O3