内联函数和宏-创新互联
内联函数是为了提高程序运行速度的一种改进。
创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、成都网站建设、外贸网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的汉源网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!当程序运行时,有时候需要重复调用一个函数,但是因为重复调用这个函数,会不断的造成函数调用,
会不断进栈出栈造成cpu的消耗。
而内联函数是在编译时就将这个函数边入进去,不用再进行地址的跳转。但是不可避免的产生了一些
内存的消耗,所有有时候用户在申请内联时,内联函数过于大,编译器不会进行允许
例如:
#include
#include
#include
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
所以可以改为蓝字写的
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享文章:内联函数和宏-创新互联
网页地址:http://ybzwz.com/article/ddjesd.html