C++內联函数是调整程序性能的一个重要方法
在C++中,函数调用需要建立栈环境,进行参数的复制,保护现场,回复现场等,这些工作都是比较大的开销。程序的效率因此收到很大的影响。所以现在很多程序运行的额外工作都已经硬件化了,来减少运行的开销。尽管如此,仍有一些细微的开销可以优化,当然,如果对于一个函数的调用很频繁,那就需要內联函数来优化。
內联函数原理:
如果一个函数频繁的被程序调用,则会很浪费时间来进行函数的频繁调用。內联函数的基本思想就是将內联函数直接放在程序运行处,相当于直接将函数代码放在被调用处。不影响链接,只在编译时运行特定的代码。
例程:
#include <iostream>
#include <time>
using namespace std;
int cal_1(int a,int b)
{
return a+b;
}
inline int cal_2(int a,int b)
{
return a+b;
}
int main()
{
int i,j,k;
int x[1000],y[1000],z[1000];
clock_t t1 = clock();cout<<t1<<endl;
for( i = 0; i<1000; i++);
for( j = 0; j<1000; j++);
for( k = 0; k<1000; k++);
z[i] = cal_2(x[j],y[k]);
cout<<(clock()-t1)<<endl;
clock_t t2 = clock();cout<<t2<<endl;
for( i = 0; i<1000; i++);
for( j = 0; j<1000; j++);
for( k = 0; k<1000; k++);
z[i] = cal_1(x[j],y[k]);
cout<<(clock()-t2)<<endl;
}
以上例子对比內联函数与一般函数的运行时间对比。
但是并不是所有的函数都可以成为內联函数
使用场合:
1. 函数体适当小,易嵌入程序主体。
2.函数被频繁调用
3.程序中调用该函数较少,避免过多的代码重复进入程序主体。