Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <utility>
- #include <execution> // !!!
- #include <vector>
- #include <iostream>
- #include <string_view>
- #include "log_duration.h"
- using namespace std;
- struct Document {
- int id;
- double relevance;
- int rating;
- };
- void SortDocumentsDefault(vector<Document>& documents) {
- LOG_DURATION("default");
- sort(execution::seq, documents.begin(), documents.end(),
- [](const Document& lhs, const Document& rhs) {
- return pair<int, double>{lhs.rating, lhs.relevance}
- > pair<int, double>{rhs.rating, rhs.relevance};
- });
- }
- void SortDocumentsParallel(vector<Document>& documents) {
- LOG_DURATION("parallel");
- sort(execution::par, // !!!
- documents.begin(), documents.end(),
- [](const Document& lhs, const Document& rhs) {
- return pair<int, double>(lhs.rating, lhs.relevance)
- > pair<int, double>(rhs.rating, rhs.relevance);
- });
- }
- int main() {
- vector<Document> docs1;
- vector<Document> docs2;
- docs1.reserve(10000000);
- docs2.reserve(10000000);
- for (int i = 0; i < 10; ++i) {
- for (int id = 0; id < 10000000; ++id) {
- docs1.push_back({id, 0.5, id});
- docs2.push_back({id, 0.5, id});
- }
- }
- SortDocumentsDefault(docs1);
- SortDocumentsParallel(docs2);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement