我有一些工作的C代码,我希望提高效率。 我知道最好避免循环中的if语句但是我在这里努力解决这个问题。 任何人都可以建议我如何使以下代码更有效?
for(iy=0;iy<Ny;iy++) { for(ix=0;ix<Nx;ix++) { if (ix==0) { pudx = (u[1][iy] + u[Nx-1][iy] - 2.0*u[0][iy])/(calc1); } else if (ix==Nx-1) { pudx = (u[0][iy] + u[Nx-2][iy] - 2.0*u[Nx-1][iy])/(calc1); } else { pudx = (u[ix+1][iy] + u[ix-1][iy] - 2.0*u[ix][iy])/(calc1); } if (iy==0) { pudy = (u[ix][1] + u[ix][Ny-1] - 2.0*u[ix][0])/(calc2); } else if (iy==Ny-1) { pudy = (u[ix][0] + u[ix][Ny-2] - 2.0*u[ix][Ny-1])/(calc2); } else { pudy = (u[ix][iy+1] + u[ix][iy-1] - 2.0*u[ix][iy])/(calc2); } u_new[ix][iy] = 2.0*u[ix][iy] - u_old[ix][iy] + calc*(pudx+pudy); } }
我知道这样的优化可以用编译器完成,但我想用-o标志来提高效率(没有编译器优化)。
@JohnBollinger之后:(未经测试,显然)
需要了解更多c/c++开发分享提高C循环的效率,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!
unsigned ix, iy; for(iy=0;iy
以上就是c/c++开发分享提高C循环的效率相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/980669.html