內聯函數和宏
內聯函數是為了提高程序運行速度的一種改進。
當程序運行時,有時候需要重復調用一個函數,但是因為重復調用這個函數,會不斷的造成函數調用,
會不斷進棧出棧造成cpu的消耗。
而內聯函數是在編譯時就將這個函數邊入進去,不用再進行地址的跳轉。但是不可避免的產生了一些
內存的消耗,所有有時候用戶在申請內聯時,內聯函數過於大,編譯器不會進行允許
例如:
#include<iostream>
#include<ctime>
#include<windows.h>
using namespace std;
int m = 10;
inline int a(int x){ return x; }//在內聯函數中的時間為3031ms
//int a(int x){ return x;} //一般情況用了3844ms
int main(){
cout << "start" << endl;
long int sum = 0;
int istart;
istart = GetTickCount();
for (long int i = 1; i <= 100000000; i++){
sum+=a(i);
}
cout << sum << endl;
cout << GetTickCount() - istart <<"ms"<< endl;//計算運算時間
system("pause");
return 0;
}
可以看出他們的運行模式確實不同。
宏:
#define a(x) x //把a(x) 替換成x ;//註意不加區別的替換。
由運行結果可以看出很明顯這裏運行速度遠快於普通方式和內聯方式;
但是需要註意,
#define SQUARE(x) x*x;
//#define SQUARE(x) ((x)*(x));
using namespace std;
int m ;
int main(){
m = SQUARE(1 + 3);
cout << m << endl;
system("pause");
return 0;
}
這裏運行結果為7 因為是這樣計算的 1+3*1+3
所以可以改為藍字寫的
本文出自 “姑蘇城” 博客,請務必保留此出處http://ji123.blog.51cto.com/11333309/1965931
內聯函數和宏