首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

两个函数的performance有关问题,大家进来讨论下

2012-03-09 
两个函数的performance问题,大家进来讨论下以下两个程序哪个的performance高,为什么?a)externintfoo(void)

两个函数的performance问题,大家进来讨论下
以下两个程序哪个的performance高,为什么?
a)   extern   int   foo(void);  
int   main()  
{  
int   i;  
for(i=0;i <10000;i++)   foo();
return   i;
}

b)     extern   int   foo(void);     int   i;  
int   main()  
{    
for(i=0;i <10000;i++)   foo();
return   i;  
}


[解决办法]
a要调整sp,至少多2个指令,如果a的i不被优化掉,那么在大多数的CPU体系下a比b要慢,如果i被优化掉那么这个问题本身就失去了意义,
另外需要考虑的问题是CPU的pipeline,使用stack的i,会使取值在stack和code区间不停的切换,对于只有一道pipeline的cpu,a必然频繁产生cache的mis-catch,而对于b,在某些体系下,i可以保存在code的附件,会比a有优势。

总之,平均起来,b比a快了一点点。

热点排行