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

内联与非内联解决方案

2012-02-09 
内联与非内联#include iostream#include ctimeusingnamespacestd//--------------------------------

内联与非内联
#include <iostream>
#include <ctime>

using   namespace   std;
//----------------------------------------
int   calc1(int   a,int   b)
{
return   a+b;
}
//-----------------------------------------
inline   int   calc2(int   a,int   b)
{
return   a+b;
}
//-----------------------------------------
void   main()
{
int   x[1000],y[1000],z[1000];
clock_t   start,finish;
double     dtime;
        start   =   clock();
for(int   i=0;   i <1000;   ++i)
for(int   j=0;   j <1000;   ++j)
for(int   k=0;   k <1000;   ++k)
z[i]   =   calc1(x[j],y[k]);
finish   =   clock();
dtime   =   finish   -   start;
cout < < "not   using   inline:   " < <dtime < < "   seconds\n ";
start   =   clock();
for(int   i=0;   i <1000;   ++i)
for(int   j=0;   j <1000;   ++j)
for(int   k=0;   k <1000;   ++k)
z[i]   =   calc2(x[j],y[k]);
finish   =   clock();
dtime   =   finish   -   start;
cout < < "   using   inline:   " < <dtime < < "   seconds\n ";
}  

我在   VC   6.0   下运行这段代码几次
基本每次都是内联耗时少
当然也有非内联少的时候
但是每一次的结果都不同
我想是不是和我开启起开的应用程序相关啊

[解决办法]
debug:

not using inline: 61030 seconds
using inline: 60968 seconds
请按任意键继续. . .


release :

not using inline: 7578 seconds
using inline: 7469 seconds
请按任意键继续. . .


[解决办法]
不要关心这个效率问题,函数调用的开销本来就非常小,inline和宏其实本来就性能提高非常有限的,更何况即使没有inline,编译器也可以进行inline优化的。

热点排行