Advertisement
RobertDeMilo

RB5.20 execution, которого нет

Apr 18th, 2024
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.46 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstdint>
  3. #include<vector>
  4. #include<future>
  5. #include<execution>
  6. #include "log_duration.h"
  7.  
  8. using namespace std;
  9.  
  10. template <typename ContainerOfVectors>
  11. void GenerateSingleThread(ContainerOfVectors& result, size_t first_row, size_t column_size)
  12. {
  13.     for_each(execution::par, begin(result), end(result),
  14.         [&first_row, column_size](vector<int>& row)
  15.         {
  16.             row.reserve(column_size);
  17.             for (size_t column = 0; column < column_size; ++column)
  18.             {
  19.                 row.push_back(first_row ^ column);
  20.             }
  21.             ++first_row;
  22.         }
  23.     );
  24. }
  25.  
  26. vector<vector<int>>GenerateSingleThread(size_t size)
  27. {
  28.     vector<vector<int>> result(size);
  29.     GenerateSingleThread(result, 0, size);
  30.     return result;
  31. }
  32.  
  33. template <typename ContainerOfVectors>
  34. int64_t SumSingleThread(const ContainerOfVectors& matrix)
  35. {
  36.     int64_t sum = 0;
  37.     for (const auto& row : matrix)
  38.     {
  39.         for (auto item : row)
  40.         {
  41.             {
  42.                 sum += item;
  43.             }
  44.         }
  45.     }
  46.     return sum;
  47. }
  48.  
  49. int main()
  50. {
  51.     LOG_DURATION("Total");
  52.     const size_t matrix_size = 7000;
  53.     vector<vector<int>> matrix;
  54.    
  55.     {
  56.         LOG_DURATION("Single thread generation");
  57.         matrix = GenerateSingleThread(matrix_size);
  58.     }
  59.    
  60.     {
  61.         LOG_DURATION("Single thread sum");
  62.         cout << SumSingleThread(matrix) << endl;
  63.     }
  64.  
  65.     return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement