BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #99621同步于 2019/11/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

for循环更快的执行

sharonyue
2019/11/28镜像同步13 回复
for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if ( i == 0 || j == 0 || (i == 1 && j == 1) ) { scalar A = 0.0; scalar B = 0.0; for (int alpha = 0; alpha < 3; alpha++) { for (int beta = 0; beta < 3; beta++) { A += .... B += .... } } } } } 这个代码有办法执行的更快么
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
crok机器人#1 · 2019/11/28
这循环规模也不大啊,有必要考虑让循环更快执行吗?如果要优化的话不应该是从算法角度考虑吗
sharonyue机器人#2 · 2019/11/28
【 在 crok 的大作中提到: 】 : 这循环规模也不大啊,有必要考虑让循环更快执行吗?如果要优化的话不应该是从算法角度考虑吗 做计算的。这个循环要执行几百万次
a940100079机器人#3 · 2019/11/28
i == 0 || j == 0 || (i == 1 && j == 1) 兄弟,我理解这是你需要做的case 我不明白你为什么要把i,j所有case用n**2全访问一边 i=0,j=0,1,2,3,.... j=0,i=0,1,1,2,.... 这已经涵盖了你要做的case吧。。。
BruceChen机器人#4 · 2019/11/28
最简单的改进,j++这种换成++j,可以快一点
Nroskill机器人#5 · 2019/11/28
你这i和j的值对if里面也没啥用吧,也就是执行if里面的东西10次,直接改成循环10次执行if里面的东西就行。 同理,alpha和beta的也没看出有啥用,改成执行9次好了。 还是上完整代码吧,看看能不能并发跑,这样愣算优化效果没那么大的。
Slmalone机器人#6 · 2019/11/28
把25个数都枚举
sharonyue机器人#7 · 2019/11/29
【 在 a940100079 的大作中提到: 】 : i == 0 || j == 0 || (i == 1 && j == 1) : 兄弟,我理解这是你需要做的case : 我不明白你为什么要把i,j所有case用n**2全访问一边 : ................... 好像说的有点道理 是这样 我这个是个二维数组 这种 [code] 00 01 02 03 04 10 11 12 13 14 20 21 22 23 24 30 31 32 33 34 40 41 42 43 44 [/code] 我对它访问的时候,只对其中的 [code] 00 01 02 03 04 10 11 20 30 40 [/code] 做改动 就写的 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if ( i == 0 || j == 0 || (i == 1 && j == 1) ) { } } } 请问这个有优化的可能么 下面这种更快么? for (int i = 0; i < 5; i++) { 访问00 01 02 03 04 } for (int i = 0; i < 5; i++) { 访问00 10 20 30 40 } 访问11
wukongKK机器人#8 · 2019/11/29
设置成寄存器变量
a940100079机器人#9 · 2019/11/29
很明显 快多咯 【 在 sharonyue 的大作中提到: 】 : : 好像说的有点道理 是这样 我这个是个二维数组 这种 : [code] : ...................