fork download
  1.  
  2. #include <chrono>
  3. #include <functional>
  4. #include <iostream>
  5. #include <vector>
  6.  
  7. typedef unsigned long long Integer;
  8.  
  9. void recurse(Integer i, Integer& sum)
  10. {
  11. sum += i;
  12. if ( i > 0 )
  13. {
  14. recurse(i - 1, sum);
  15. }
  16. }
  17.  
  18. int main()
  19. {
  20. const Integer n(50000ull);
  21. const auto t_0(std::chrono::high_resolution_clock::now());
  22. Integer sum(0);
  23. recurse(n, sum);
  24. const auto t_1(std::chrono::high_resolution_clock::now());
  25. std::function<void(Integer, Integer&)> lambda_recurse([&lambda_recurse](Integer i, Integer& l_sum)
  26. {
  27. l_sum += i;
  28. if ( i > 0 )
  29. {
  30. lambda_recurse(i - 1, l_sum);
  31. }
  32. });
  33. Integer lambda_sum(0);
  34. lambda_recurse(n, lambda_sum);
  35. const auto t_2(std::chrono::high_resolution_clock::now());
  36. std::cout << std::chrono::duration_cast<std::chrono::nanoseconds>(t_1 - t_0).count() << "\n";
  37. std::cout << std::chrono::duration_cast<std::chrono::nanoseconds>(t_2 - t_1).count() << "\n";
  38. }
Success #stdin #stdout 0s 2984KB
stdin
Standard input is empty
stdout
0
517000