首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

_int64寻址有关问题

2012-03-04 
_int64寻址问题下面两端代码1)_int64a,b,c,d//赋值for(inti0i 0x1000i++)for(intj0j 0x100j++){a

_int64寻址问题
下面两端代码
1)
_int64   a,b,c,d;

//赋值

for(int   i=0;i <0x1000;i++)
for(int   j=0;j <0x100;j++)
{
        a=(a*b+c)%m;
}

2)
_int64   a[0x100],b,c,d;

//赋值

for(int   i=0;i <0x1000;i++)
for(int   j=0;j <0x100;j++)
{
        a[i+1]=(a[i]*b+c)%m;
}


在release下
1)的运行速度小于1秒
2)的运行速度为24秒
想问一问高手是怎么回事?
个人怀疑32位机在处理64位运算时需要特殊的寻址,这里可能很花时间?请高手指教


[解决办法]
1. a[i]是间接寻址,a是直接寻址,机器指令上前者多出几个周期,可查手册
2. 少量变量在短时间内的频繁数据传递,可以在CPU内完成,变量在寄存器阵列或高速缓存中。大块数据,像a[]在内存中,访问内存比CPU内部操作要慢

热点排行