https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67434
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Michal Kucharski from comment #0) > std::chrono::duration<double> benchmark( ) > { > std::random_device rd; > > std::chrono::duration<double> total; You have not initialized this variable. > > for (int i = 0; i < 100; i++) > { > auto t1 = std::chrono::high_resolution_clock::now(); > auto t2 = std::chrono::high_resolution_clock::now(); > total += std::chrono::duration_cast<std::chrono::duration<double>>(t2 - > t1); This has undefined behaviour because you are performing addition on an uninitialized value. You could have found this with valgrind.