fork(8) download
  1. #include <iostream>
  2. #include <chrono>
  3.  
  4.  
  5. template<typename TimeT = std::chrono::milliseconds>
  6. struct measure
  7. {
  8. template<typename F>
  9. static typename TimeT::rep execution(F const &func)
  10. {
  11. auto start = std::chrono::system_clock::now();
  12. func();
  13. auto duration = std::chrono::duration_cast< TimeT>(
  14. std::chrono::system_clock::now() - start);
  15. return duration.count();
  16. }
  17. };
  18.  
  19. struct functor
  20. {
  21. int state;
  22. functor(int state) : state(state) {}
  23. void operator()() const
  24. {
  25. std::cout << "In functor run for ";
  26. }
  27. };
  28.  
  29. void func()
  30. {
  31. std::cout << "In function, run for " << std::endl;
  32. }
  33.  
  34.  
  35. int main()
  36. {
  37. int dummy(3);
  38.  
  39. std::cout << measure<>::execution( [&dummy]() {
  40. dummy *= 2; // usage with lambdas
  41. std::cout << "In lambda, run for ";
  42. }) << std::endl;
  43.  
  44. std::cout << measure<>::execution(functor(dummy)) << std::endl;
  45.  
  46. std::cout << measure<>::execution(func);
  47.  
  48. return 0;
  49. }
Success #stdin #stdout 0s 3340KB
stdin
Standard input is empty
stdout
In lambda, run for 0
In functor run for 0
In function, run for 
0