Please consider the following piece of code:
void error_handling();
bool method_impl();
bool method()
{
const bool res = method_impl();
if (res == f
Without knowing the implementation of std::time() I wouldn't conclude much from this test. From your own results, it seems like it dominates the time in the loop.
FWIW, I use likely()/unlikely() liberally myself when tuning code. I do not want to change the structure of the code, but when reading the assembly, I'd like to see the common path be a straight line of untaken branches. The key here (for me) is the readability of the assembly. The fact that this is also what will be fastest is secondary (the fastest possible branch is a correctly predicted untaken branch).