没有合适的资源?快使用搜索试试~ 我知道了~
在C++中使用Lambda函数提高性能(小文档)
需积分: 49 28 下载量 40 浏览量
2018-08-31
16:06:26
上传
评论 2
收藏 126KB PDF 举报
温馨提示
试读
4页
在C++中使用Lambda函数提高性能(小文档),比较详细的用例,文章很短
资源推荐
资源详情
资源评论
在 C++ 中使用 Lambda 函数提高代码性能
学习各种外挂制作技术,马上去百度搜索 "
"
"
" 魔鬼作坊 "
"
"
" 点击第一个站进入、快
速成为做挂达人。
使编译器以及操作系统从正在创建的应用中榨取更高性能的关键在于提供充足的有关代码
意图的信息 。 在充分了解这个代码意图实现的功能等信息的情况下 , 就有可能将代码在编译
时和运行时的并行吞吐量最大化 , 令开发者可以将更多精力放在他们所关注的商业领域的问
题 , 将重量级的多核多处理器的任务计划交托给编译器 , 运行时库以及操作系统中的基础设
施代码来处理。
循环函数是很重要的一个环节 , 因为在所有可用的硬件资源中 , 被分离的循环中的各个
部分在一般情况下能够提供更高的应用性能 。 考虑这样一个小情况 : 迭代选定组合中的全部
元素以求得总和。最简单最直接的执行方法如下:
std::vector ﹤ int ﹥ v;
v.push_back(1);
v.push_back(5);
int total
=
0;
for (int ix
=
0; ix ﹤ v.size();
++ix){
total += v[ix];
}
以上的例子十分便于人工读写。对于熟悉 C 语言家族语法的开发者而言,这个循环的
意图也十分容易理解 。 然而对于编译器以及运行时库的组合而言 , 要在多个线程之间计划好
这个循环,它还需要类似于 OpenMP 编译指示一类的指示来告诉它哪里有优化的空间:
std::vector ﹤ int ﹥ v;
v.push_back(1);
v.push_back(5);
int total
=
0;
#pragma omp for
for (int ix
=
0; ix ﹤ v.size();
++ix){
#pragma omp atomic
total += v[ix];
}
第一个 OpenMP 指示提出了多线程运行 for 循环的要求 , 而第二个 omp atomic 指示则被
用来防止多线程同时向总数变量上写入 。 对于 OpenMP , 在 MSDN 库的参考文档中有关于所有
指示的详细介绍。
如果使用了声明式循环技巧,那么将并行方法应用在矢量求和上则更加干净简单。 STL
资源评论
shengda_mao1118
- 粉丝: 28
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 校园帮项目,毕业设计/课程设计/javaWeb/SSM
- C++ plotting library,matplotlib-cpp-master.zip
- 案例源码matplotlib-examples-master.zip
- 基于JavaScript 实现的KMP 算法
- 基于C++实现二叉树的创建,遍历,添加,查找与删除
- 基于C语言实现二叉树的基本操作
- 毕业设计基于STM32的测量温度与压力的数据处理设计C语言完整源码+论文.zip
- 基于MATLAB的PCA算法人脸识别项目源码+GUI界面+说明文档.zip
- 基于STM32的测量温度与压力的数据处理设计源码+论文(毕业设计).zip
- Vision Transformer 网络对不同氨气氧气浓度轨迹RAS 图像数据集的分类,包含训练权重和数据集、迁移学习
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功