taming-cpp

Experiments with C++ and comparisons with C
git clone https://git.tronto.net/taming-cpp
Download | Log | Files | Refs | README

sort_parallel.cpp (702B)


      1 /* Requires Thread Building Blocks (libtbb-dev on Debian) */
      2 
      3 #include <algorithm>
      4 #include <cstdlib>
      5 #include <ctime>
      6 #include <execution>
      7 #include <iostream>
      8 
      9 int a[ARRAYSIZE];
     10 
     11 int main(void) {
     12 	srand(time(NULL));
     13 	for (auto &x : a) x = rand() % 1000000000;
     14 
     15 	struct timespec begin;
     16 	clock_gettime(CLOCK_MONOTONIC, &begin);
     17 
     18 	std::sort(std::execution::par, a, a+ARRAYSIZE,
     19 		[](const int &x, const int &y) { return x < y; });
     20 
     21 	struct timespec end;
     22 	clock_gettime(CLOCK_MONOTONIC, &end);
     23 	double time = end.tv_sec - begin.tv_sec +
     24 		(end.tv_nsec - begin.tv_nsec) / 1000000000.0;
     25 
     26 	std::cout << "(" << a[ARRAYSIZE/2] << ") C++ time for " << ARRAYSIZE
     27 		<< " numbers (parallel): " << time << "s\n";
     28 }