Advertisement
giGii

0_seq_and_parallel_speed_test

Dec 11th, 2022 (edited)
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.38 KB | None | 0 0
  1. #include <algorithm>
  2. #include <utility>
  3. #include <execution>  // !!!
  4. #include <vector>
  5. #include <iostream>
  6. #include <string_view>
  7.  
  8. #include "log_duration.h"
  9.  
  10. using namespace std;
  11.  
  12. struct Document {
  13.     int id;
  14.     double relevance;
  15.     int rating;
  16. };
  17.  
  18. void SortDocumentsDefault(vector<Document>& documents) {
  19.     LOG_DURATION("default");
  20.     sort(execution::seq, documents.begin(), documents.end(),
  21.          [](const Document& lhs, const Document& rhs) {
  22.              return pair<int, double>{lhs.rating, lhs.relevance}
  23.                   > pair<int, double>{rhs.rating, rhs.relevance};
  24.          });
  25. }
  26.  
  27. void SortDocumentsParallel(vector<Document>& documents) {
  28.     LOG_DURATION("parallel");
  29.     sort(execution::par,  // !!!
  30.          documents.begin(), documents.end(),
  31.          [](const Document& lhs, const Document& rhs) {
  32.              return pair<int, double>(lhs.rating, lhs.relevance)
  33.                   > pair<int, double>(rhs.rating, rhs.relevance);
  34.          });
  35. }
  36.  
  37. int main() {
  38.     vector<Document> docs1;
  39.     vector<Document> docs2;
  40.  
  41.     docs1.reserve(10000000);
  42.     docs2.reserve(10000000);
  43.  
  44.     for (int i = 0; i < 10; ++i) {
  45.         for (int id = 0; id < 10000000; ++id) {
  46.             docs1.push_back({id, 0.5, id});
  47.             docs2.push_back({id, 0.5, id});
  48.         }
  49.     }
  50.  
  51.     SortDocumentsDefault(docs1);
  52.     SortDocumentsParallel(docs2);
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement