for循环优化问题

void updatePositions() {
int i, j;

for( i=0; i<DIMS; i++ )
for( j=0; j<NPARTS; j++ )
r[i][j] -= 0.5 + ((double) rand() / m);
}
改成
for( i=DIMS-1; i<=0; i-- )
for( j=NPARTS-1; j<=0; j-- )

int computePot() {
int i, j;
double temp1[NPARTS],temp2[NPARTS];

for( i=0; i<NPARTS; i++ ) {
for( j=0; j<i-1; j++ ) {
改成
for( i=NPARTS-1; i<=0; i-- ) {
for( j=i-2; j<=0; j-- ) {


为啥结果都是0了呢?
...全文
438 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
for循环递减比递增要稍微快点
IntelPerLib 2006-12-27
  • 打赏
  • 举报
回复
这个部分的修改可能会影响结果, 去掉试试? 有点好奇, 为什么要这样修改呢? 呵呵.
--------------------------
void updatePositions() {
int i, j;

for( i=0; i<DIMS; i++ )
for( j=0; j<NPARTS; j++ )
r[i][j] -= 0.5 + ((double) rand() / m);
}
改成
for( i=DIMS-1; i<=0; i-- )
for( j=NPARTS-1; j<=0; j-- )
  • 打赏
  • 举报
回复
ok,偶系菜鸟,多谢各位
housisong 2006-12-27
  • 打赏
  • 举报
回复
"for循环递减比递增要稍微快点" 不知道你哪里看来的
写汇编的时候,经常写成递减(或递增)到零模式不错,而你不能据此得出“for循环递减比递增要稍微快点”就不好了; 很多编译器生成的指令本来就考虑了的,不用自己改了;
赖勇浩 2006-12-27
  • 打赏
  • 举报
回复
沒有聽說過--會比++快
  • 打赏
  • 举报
回复
是呀,我也刚发现忘了改大于号了,改了之后用Quick Performance Analysis看时间好像比++更多了。
可是大循环--是要比++快才对啊。
dwbclz 2006-12-27
  • 打赏
  • 举报
回复

应该写为
for( i=DIMS-1; i>=0; i-- )
for( j=NPARTS-1; j>=0; j-- )
你的循环终止条件错误。
其实这个改动应该没有什么效果的。
找到需要优化的重点代码才是最重要的。

568

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧