C++中如何提升双重for循环的执行效率(二)

前言:

前两篇文章有介绍到,如何提升双重for循环的执行效率,也对不同的情况做了对比,今天来分享一种新的方式,比前两种方式都要好用的方法,利用windows自带的openmp库来进行并行计算。

原理:

使用openmp速度快的原理是,可以调动cpu的多核同时进行并行计算,cpu的利用率接近100%,这个是妥妥的用硬件来换时间的用法。

验证步骤:

     分别来验证四种情况下的for循环的执行效率。

第一种情况:执行100000次,640*512次循环(循环体内每次加8来进行),查看耗时

第二种情况:执行100000次,640*512次循环(循环体内每次减8来进行),查看耗时

第三种情况:执行100000次,640*512次循环(循环体内直接每次加1执行),查看耗时

第四种情况,执行100000次,640*512次循环(采用openmp并行的方式),查看耗时

验证结果:

第一种情况耗时:1274858 us

第二种情况耗时:1315351 us

第三种情况耗时:9658787 us

第四种情况耗时:1170410 us

从以上耗时统计上来看,采用openmp进行并行计算的方式,耗时最短,只需要1.17秒就可以完成100000次的640*512的循环。

在开发中如何使用openmp

  1. 如果是vs开发的话,直接在“属性->C/C++->语言”中,配置OpenMp支持的选项勾选为“是(/openmp)”即可,在使用的时候,在需要进行并行计算的for循环的外边添加 #pragma omp parallel for即可,非常简单。

  1. 如果是使用QT开发,稍微有点不一样,这个是要配置.pro文件,配置项如下:

QMAKE_CXXFLAGS += /openmp

QMAKE_LFLAGS += -fopenmp

这两项配置完毕后,同样,在需要进行并行计算的for循环体外添加 

#pragma omp parallel for即可。

总结:

    对于双重for循环效率的提升,后续我还会继续探索新的方式,有好的建议或方法的友友们也可以留言,共同探讨,共同进步。

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值