fork download
  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <thread>
  4. #include <iostream>
  5. #include <chrono>
  6. #include <type_traits>
  7.  
  8. typedef std::conditional<std::chrono::high_resolution_clock::is_steady,
  9. std::chrono::high_resolution_clock,
  10. std::chrono::steady_clock >::type maxres_steady_clock;
  11.  
  12.  
  13. int main(void) {
  14.  
  15. std::cout << "sleep(3) took: \n\n";
  16.  
  17. clock_t c_start, c_end;
  18. time_t t_start, t_end;
  19. std::chrono::high_resolution_clock::time_point h_start, h_end;
  20. std::chrono::steady_clock::time_point steady_start, steady_end;
  21. maxres_steady_clock::time_point h_steady_start, h_steady_end;
  22.  
  23. time(&t_start); // less precise than clock() but always get the real actual time
  24. c_start = clock(); // clock() get only CPU-time, it can be more than real or less - sleep(3); took 0.00 seconds
  25. h_start = std::chrono::high_resolution_clock::now();
  26. steady_start = std::chrono::steady_clock::now();
  27. h_steady_start = maxres_steady_clock::now();
  28.  
  29. std::this_thread::sleep_for(std::chrono::seconds(3));
  30.  
  31. h_steady_end = maxres_steady_clock::now();
  32. steady_end = std::chrono::steady_clock::now();
  33. h_end = std::chrono::high_resolution_clock::now();
  34. c_end = clock();
  35. time(&t_end);
  36.  
  37. std::cout << "maxres_steady = " << std::chrono::duration<double>(h_steady_end - h_steady_start).count() << " s \n";
  38.  
  39. std::cout << "highres = " << std::chrono::duration<double>(h_end - h_start).count() << " s \n";
  40. std::cout << "steady = " << std::chrono::duration<double>(steady_end - steady_start).count() << " s \n";
  41.  
  42. printf("clock() = %.2lf seconds \n", (c_end - c_start) / (double)CLOCKS_PER_SEC);
  43. printf("time() = %.2lf seconds \n", difftime(t_end, t_start));
  44.  
  45. return 0;
  46. }
Success #stdin #stdout 0s 3456KB
stdin
Standard input is empty
stdout
sleep(3) took: 

maxres_steady = 3.00006 s 
highres = 3.00006 s 
steady = 3.00006 s 
clock() = 0.00 seconds 
time() = 3.00 seconds