Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2020
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.67 KB | None | 0 0
  1. #include <iostream>
  2. #include <chrono>
  3. #include <functional>
  4. #include <vector>
  5. #include <random>
  6.  
  7. namespace {
  8. constexpr size_t sz = 1e8;
  9. constexpr long long MOD = 1e9;
  10. } // namespace
  11.  
  12. template <class Foo, class... Args> std::time_t get_duration(Foo func, Args&... args) {
  13.     auto start = std::chrono::high_resolution_clock::now();
  14.     func(args...);
  15.     auto stop = std::chrono::high_resolution_clock::now();
  16.     return std::chrono::duration_cast<std::chrono::milliseconds>(stop - start).count();
  17. }
  18.  
  19. void with_RBF(std::vector<long long> const& vec) {
  20.     long long sum = 0;
  21.     for (const long long& elem : vec) {
  22.         sum = (sum + elem) % MOD;
  23.     }
  24. }
  25.  
  26. void with_operator(std::vector<long long> const& vec) {
  27.     long long sum = 0;
  28.     for (size_t i = 0; i < sz; ++i) {
  29.         sum = (sum + vec[i]) % MOD;
  30.     }
  31. }
  32.  
  33.  
  34. void with_at(std::vector<long long> const& vec) {
  35.     long long sum = 0;
  36.     for (size_t i = 0; i < sz; ++i) {
  37.         sum = (sum + vec.at(i)) % MOD;
  38.     }
  39. }
  40.  
  41.  
  42. int main() {
  43.     std::vector<long long> vec(sz);
  44.     std::random_device rd;
  45.     std::mt19937 gen(rd());
  46.     std::uniform_int_distribution<long long> uidis(0);
  47.  
  48.     for (long long& elem : vec) elem = uidis(gen);
  49.  
  50.     std::time_t rbf_time = get_duration(with_RBF, vec);
  51.     std::time_t operator_time = get_duration(with_operator, vec);
  52.     std::time_t at_time = get_duration(with_at, vec);
  53.  
  54.  
  55.     // AMD A6-6310 4 cores 1800 MHz, 4 gb DDR3
  56.  
  57.     std::cout << "rbf_time == " << rbf_time << " ms\n"; // 2748 ms
  58.     std::cout << "operator_time == " << operator_time << " ms\n"; // 1900 ms
  59.     std::cout << "at_time == " << at_time << " ms\n"; // 2842 ms
  60.  
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement