fork(1) download
  1. #include <chrono>
  2. #include <cstdint>
  3. #include <iostream>
  4. #include <random>
  5. #include <vector>
  6.  
  7. using accu_t = std::uint32_t;
  8. using element_t = std::uint32_t;
  9. std::size_t const num_elements = 10000000;
  10.  
  11. int main()
  12. {
  13. std::vector<element_t> elements;
  14. elements.reserve(num_elements);
  15. std::uniform_int_distribution<element_t> distribution;
  16. std::mt19937_64 engine;
  17. for (std::size_t i = 0; i != num_elements; ++i)
  18. {
  19. elements.push_back(distribution(engine));
  20. }
  21.  
  22. #ifdef USE_PTR
  23. std::vector<element_t *> ptrs;
  24. ptrs.reserve(num_elements);
  25. for (auto & element : elements) ptrs.push_back(&element);
  26. #endif
  27.  
  28. accu_t sum = 0;
  29. auto start = std::chrono::steady_clock::now();
  30.  
  31. #ifdef USE_PTR
  32. for (auto ptr : ptrs) sum += *ptr;
  33. #else
  34. for (auto element : elements) sum += element;
  35. #endif
  36.  
  37. auto stop = std::chrono::steady_clock::now();
  38. auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(stop - start);
  39. std::cout << "sum: " << sum << "\n";
  40. std::cout << ms.count() << "ms\n";
  41. }
Success #stdin #stdout 0.51s 3344KB
stdin
Standard input is empty
stdout
sum: 2517582001
15ms