tbb库的sort多线程优化
使用ubuntu20,安装tbb库
sudo apt update
sudo apt install libtbb-dev
测试代码
#include <iostream>
#include <algorithm>
#include <chrono>
#include <random>
#include <ratio>
#include <vector>
#include <execution>
#include <tbb/blocked_range.h>
using namespace std;
int main()
{
random_device rd;
vector<double> vals(1000000);
for(auto& d:vals)
{
d = static_cast<double>(rd());
}
for(int i=0;i<5;++i)
{
using namespace std::chrono;
vector<double> sorted(vals);
const auto startTime = high_resolution_clock::now();
sort(std::execution::par, sorted.begin(), sorted.end());
//sort(sorted.begin(), sorted.end());
const auto endTime = high_resolution_clock::now();
cout<< "Latency:"
<<duration_cast<duration<double,milli>>(endTime-startTime).count()
<<endl;
}
}
编译
g++ test.cpp -std=c++2a -ltbb
不使用多线程优化结果(使用恢复注释代码)
Latency:352.229
Latency:352.568
Latency:352.57
Latency:353.675
Latency:355.484
使用多线程优化结果
Latency:126.013
Latency:113.639
Latency:112.808
Latency:112.826
Latency:112.7