C++ C+中的并行执行策略+;17

C++ C+中的并行执行策略+;17,c++,parallel-processing,c++17,execution,C++,Parallel Processing,C++17,Execution,我最近开始使用/学习C++17的一些新特性来实现并行性 我遵循了或多或少改编自C++17食谱()的代码(如下所列) 但无论我使用的是“execution::par”还是“execution::seq”,执行时间似乎都没有差别(请参阅下面的输出) ---代码--- #包括 #包括 #包括 #包括 #包括 #包括 使用名称空间std; 静态布尔奇数(int n){return((n%2)=0);} int main(int argc,字符**argv) { int arg1=-1; 如果(argc=

我最近开始使用/学习C++17的一些新特性来实现并行性

我遵循了或多或少改编自C++17食谱()的代码(如下所列)

但无论我使用的是“execution::par”还是“execution::seq”,执行时间似乎都没有差别(请参阅下面的输出)

---代码---

#包括
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
静态布尔奇数(int n){return((n%2)=0);}
int main(int argc,字符**argv)
{
int arg1=-1;
如果(argc==2)
{
arg1=atoi(argv[1]);
}
std::time\u t result1=std::time(nullptr);
载体d(50000000);
mt19937 gen;
统一分布图(0,100000);
自动随机数([=]()可变{return dis(gen);});
如果(arg1==1)
{
生成(执行::par、begin(d)、end(d)、rand_num);
自动赔率(count_if(执行:par、开始(d)、结束(d)、奇数));

在VS 15.8
generate
中,cout为。因此,如果代码的时间由
generate
函数控制,则示例代码的执行时间不会有显著差异

此外,使用高分辨率计时器也是一种良好的做法:

#include <chrono>
using std::chrono::high_resolution_clock;
#包括
使用std::chrono::高分辨率时钟;

在VS 15.8中
生成
是。因此,如果代码的时间由
生成
函数控制,则示例代码的执行时间不会有显著差异

此外,使用高分辨率计时器也是一种良好的做法:

#include <chrono>
using std::chrono::high_resolution_clock;
#包括
使用std::chrono::高分辨率时钟;

谢谢Phillip,Count\u if也一样吗?我希望50000000个元素至少有1-2秒的差异。
Count\u if
在该版本的VS中实现。但是,我希望随机数生成器控制执行时间,因此即使奇数计算并行化,也不会出现任何异常整体计时的显著减少。感谢Phillip,Count_if也一样吗?我希望50000000个元素至少有1-2秒的差异。
Count_if
在该版本的VS中实现。但是,我希望随机数生成器控制执行时间,所以即使奇数计算是并行的,我也会zed,总体时间不会有明显的减少。