Использование 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

Ответы на вопрос(2)

Ваш ответ на вопрос