目录
sequenced_policy
使用代码:
准备
代码
结果:
sequenced_policy
增加参数:sequenced_policy提供相应并行版算法
execution::seq并行算法执行可以不并行化
execution::par并行算法执行可以并行化
execution::par_unseq并行算法执行的可以并行以及向量化
看看3种的执行时间都是多少
使用代码:
准备
代码
#include<iostream>
#include<thread>
#include<random>
#include<chrono>
#include<algorithm> //算法头文件,包含了一些常用的算法函数,如排序、查找等;
#include<numeric> //数值算法头文件,包含了一些数值算法函数,如求和、求平均值等;
#include<execution> //主要用于并行算法的执行策略。
using namespace std;
void randomData(vector<double>& data, int size)
{
random_device rd; //生成种子
mt19937 mt; (rd()); //mt19937作为随机数引擎
uniform_real_distribution<double> dist(1.0,100.0);//定义一个生成1.0到100.0之间的均匀分布的随机数发生器
for (int i = 0; i < size; i++)
{
data.push_back(dist(rd));
}
}
int main()
{
vector<double> Data;
randomData(Data, 10e6);
vector<double> test1(Data);
vector<double> test2(Data);
vector<double> test3(Data);
//seq
auto start_time = chrono::steady_clock::now();//计时时钟
sort(execution::seq, test1.begin(), test1.end());
auto end_time = chrono::steady_clock::now();
auto duration = chrono::duration_cast<chrono::milliseconds>(end_time - start_time).count();
cout << "seq" << duration <<"ms"<< endl;
//par
auto start_time2 = chrono::steady_clock::now();//计时时钟
sort(execution::par, test2.begin(), test2.end());
auto end_time2 = chrono::steady_clock::now();
auto duration2 = chrono::duration_cast<chrono::milliseconds>(end_time2 - start_time2).count();
cout << "par" << duration2 << "ms" << endl;
//par_unseq
auto start_time3 = chrono::steady_clock::now();//计时时钟
sort(execution::par_unseq, test3.begin(), test3.end());
auto end_time3 = chrono::steady_clock::now();
auto duration3 = chrono::duration_cast<chrono::milliseconds>(end_time3 - start_time3).count();
cout << "par_unseq" << duration3 << "ms" << endl;
}
结果: