声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3062|回复: 0

[C/C++] C++循环优化

[复制链接]
发表于 2005-7-26 21:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
<P><B>发信人: greatfool (大猪), 信区: Programming <BR>标  题: Re: C++-&gt;asm求助 <BR>发信站: The unknown SPACE (Mon May 21 01:55:37 2001), 转信 </B><BR>  <BR>要优化运算速度的话,不如用一些临时变量存储反复使用的数组成员, <BR>象大量的重复运算也可以用临时变量存储结果, 比如: <BR>int x1 = x-1,y1 = y-1; <BR>double hbx1y1 = hb[x1][y1], chb1 = chbl[x1][y1].... <BR>  <BR>还可以用递加的指针代替有规律询址的数组变量,比如: <BR>double *p_hb_x, *p_hb_y; <BR>p_hb_x = *hb; <BR>for (int x=.....) { <BR>  p_hb_y = p_hb_x; <BR>  for (int y=....) { <BR>  (*p_hb_y) = ..... + (*p_hb_y) * (....) <BR>  ..... <BR>  p_hb_y++; <BR> } <BR>p_hb_x += size_of_col; <BR>} <BR>为每一个运算的变量准备一个指针,即使是同一个数组里的 <BR>double *p1, *p2; <BR>..... <BR>  p1++; p2++; <BR>  *p1 = a + b + c * (*p2); <BR>.... <BR>优于: <BR>double *p; <BR>.... <BR>  *p+</P>
<P>+; <BR>  *p = a + b + c * (*(p+offset)) <BR>  <BR>  <BR>最后, 循环终值也可以先计算好, 放在临时变量里,避免重复计算 <BR>相信这样的程序不会比汇编的效率差多少. <BR>  <BR>【 在 FangQ (F the world) 的大作中提到: 】 <BR>: 一段数值计算程序,想加快运算速度,程序核心计算部分如下,不 <BR>: 知道如何把这段计算改为汇编(不知道如何对应asm{}内外的变量), <BR>: 循环等的写法也不太清楚),哪位大侠能帮忙给看看,多谢! <BR>: hb,hc,eab,eac,chb1,chb2,ceb1,ceb2,chc1,chc2,cec1,cec2为double数组 <BR>: w,m,n为整形变量 <BR>: 平台是C++Builder4 <BR>: //------------------------------------------------ <BR>: for(int x=1;x&lt;=2*w+m;x++) <BR>:    for(int y=1;y&lt;=2*w+n;y++) <BR>:    { <BR>:       hb[x-1][y-1]=chb1[x-1][y-1]*hb[x-1][y-1] <BR>:             +chb2[x-1][y-1]*(eab[x-1][y-1]-eab[x-1][y]+eac[x-1][y-1]-eac[x-1][ <BR>]); <BR>:       hc[x-1][y-1]=chc1[x-1][y-1]*hc[x-1][y-1] <BR>:             +chc2[x-1][y-1]*(eab[x][y-1]-eab[x-1][y-1]+eac[x][y-1]-eac[</P>
<P>x-1][y- <BR>]); <BR>:    } <BR>: for(int x=2;x&lt;=2*w+m;x++) <BR>:    for(int y=2;y&lt;=2*w+n;y++) <BR>:    { <BR>:     eab[x-1][y-1]=ceb1[x-1][y-1]*eab[x-1][y-1] <BR>:                +ceb2[x-1][y-1]*(hc[x-1][y-1]-hc[x-2][y-1]); <BR>:     eac[x-1][y-1]=cec1[x-1][y-1]*eac[x-1][y-1] <BR>:                +cec2[x-1][y-1]*(hb[x-1][y-2]-hb[x-1][y-1]); <BR>:    } <BR>  <BR></P>
回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-12 08:27 , Processed in 0.096699 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表