I want to get the timing result in milliseconds, so I chose std::difftime because I think it is relatively simple, but after running on different platforms, I get different results. I checked cppreference and didn't see any related explanation.
#include <iostream>
#include <ctime>
#include <thread>
int main(int argc, char** argv)
{
int count = 10;
for(int i=0; i<count; ++i){
auto st = std::clock();
std::this_thread::sleep_for(std::chrono::seconds(1));
std::cout << "sleep time is: " << std::difftime(std::clock(), st) << std::endl;
//printf("time is: %.f\n", difftime(clock(), st));
}
return 0;
}
ubuntu: Linux hgsrv 5.3.0-61-generic #55~18.04.1-Ubuntu SMP Mon Jun 22 16:40:20 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
windows: 20h2 19042.630
g++ version: g++ (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
vs version: 2019 16.7.7
result of linux:
sleep time is: 89
sleep time is: 36
sleep time is: 29
sleep time is: 27
sleep time is: 27
sleep time is: 30
sleep time is: 29
sleep time is: 31
sleep time is: 28
sleep time is: 26
result of Windows:
sleep time is: 1004
sleep time is: 1011
sleep time is: 1014
sleep time is: 1001
sleep time is: 1009
sleep time is: 1011
sleep time is: 1011
sleep time is: 1006
sleep time is: 1003
sleep time is: 1010