内联与非内联
#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优化的。