46 cout <<
"Threads C++17" << endl;
48 size_t const N = 1<<25;
50 iota(v.begin(), v.end(), 1);
51 std::shuffle(v.begin(), v.end(), std::mt19937{std::random_device{}()});
57 cout <<
"---- sort old ----" << endl;
58 auto t1 = system_clock::now();
59 sort(v.begin(), v.end());
60 auto t2 = system_clock::now();
62 auto duration = std::chrono::duration <double, std::micro>(t2 - t1);
63 cout <<
"sort old : " << duration.count() / 1e6 <<
" sec." << endl;
68 cout <<
"---- sort seq ----" << endl;
69 auto t1 = system_clock::now();
70 sort(std::execution::seq, v.begin(), v.end());
71 auto t2 = system_clock::now();
72 auto duration = std::chrono::duration <double, std::micro>(t2 - t1);
73 cout <<
"sort seq : " << duration.count() / 1e6 <<
" sec." << endl;
78 cout <<
"---- sort par ----" << endl;
79 auto t1 = system_clock::now();
80 sort(std::execution::par, v.begin(), v.end());
82 auto t2 = system_clock::now();
83 auto duration = std::chrono::duration <double, std::micro>(t2 - t1);
84 cout <<
"sort par : " << duration.count() / 1e6 <<
" sec." << endl;
89 cout <<
"---- sort par_unseq ----" << endl;
90 auto t1 = system_clock::now();
91 sort(std::execution::par_unseq, v.begin(), v.end());
92 auto t2 = system_clock::now();
93 auto duration = std::chrono::duration <double, std::micro>(t2 - t1);
94 cout <<
"sort par_unseq: " << duration.count() / 1e6 <<
" sec." << endl;
97 auto ip = max_element(std::execution::par,v.cbegin(), v.cend());
98 cout <<
"*ip " << *ip << endl;
ostream & operator<<(ostream &s, const vector< T > &v)
Prints the whole vector of base class pointers.