博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++17 并行排序初体验
阅读量:6113 次
发布时间:2019-06-21

本文共 878 字,大约阅读时间需要 2 分钟。

MSVC篇

微软在2018年9月份发布博客宣布正式支持C++17的并行算法。它的使用方法和C++17标准基本一致,不用作太多改动。

由于多核会让clock_t多次累计,因此计时得换用chrono提供的时间函数。至于究竟使用high_resolution_clock还是system_clock倒是无所谓,因为我们测试数据量较大,用时相对会长一点。

最亮眼的一句是:

#include 
复制代码

有了它之后就可以发挥多核计算的性能了。由于没有在Windows的较高机器配置,仅仅测试了小数据量情况,一次顺利通过。

ICC篇

为了在Mac上体验C++17的并行新特性,我申请了教育版套装Intel® Parallel Studio XE 2019,其中包含了Intel® C++ Compiler 19.0 for macOS。虽然也有很多使用的曲折,但感觉它将来可以做得更完善一些。

这个编译器使用很简单,参考安装路径下的这篇帮助即可:

opt/intel/documentation_2019/en/compiler_c/ps2019/get_started_mc.htm复制代码

使用C++编译器:

icpc source.cpp复制代码

要想体验并行,可以根据这篇的指点配置。使用上基本上都遵循了C++17标准,但是包含头文件得加上pstl。比如要使用并行的算法algorithm,在原始的头文件基础上还得追加:

#include 
#include
复制代码

这点和标准不太一致。

我们考虑对10亿个double型随机数进行排序,采用均匀分布。一行代码即可:

std::sort(std::execution::par, V.begin(), V.end());复制代码

实测速度是非常的惊人:11秒!

由于使用了并行排序,实际占用内存量会更大且每次执行不同,但不会超过原有向量两倍也即15GB。这说明了内存很重要。

其他

clang和gcc:得加油,得加油,得加油。

转载地址:http://cznka.baihongyu.com/

你可能感兴趣的文章
onInterceptTouchEvent和onTouchEvent调用时序
查看>>
android防止内存溢出浅析
查看>>
4.3.3版本之引擎bug
查看>>
SQL Server表分区详解
查看>>
使用FMDB最新v2.3版本教程
查看>>
SSIS从理论到实战,再到应用(3)----SSIS包的变量,约束,常用容器
查看>>
STM32启动过程--启动文件--分析
查看>>
垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
查看>>
淘宝的几个架构图
查看>>
Android扩展 - 拍照篇(Camera)
查看>>
JAVA数组的定义及用法
查看>>
充分利用HTML标签元素 – 简单的xtyle前端框架
查看>>
设计模式(十一):FACADE外观模式 -- 结构型模式
查看>>
iOS xcodebuile 自动编译打包ipa
查看>>
程序员眼中的 SQL Server-执行计划教会我如何创建索引?
查看>>
【BZOJ】1624: [Usaco2008 Open] Clear And Present Danger 寻宝之路(floyd)
查看>>
cmake总结
查看>>
数据加密插件
查看>>
linux后台运行程序
查看>>
win7 vs2012/2013 编译boost 1.55
查看>>