C++性能之内联函数

     性能 有效充分的使用资源是提升程序性能的一个重要手段,如果一个公司注重仓储,在全国范围内,建立相应商品仓库,那就表示客户能更早的收到自己想要的产品,物资能够就近调拨,配送就能够尽快到位,但是这样有一个缺陷,就是占用资源和空间过多,在程序中,空间并不是无线和立体的,也就是说空间是有限的,不能够随便占用过多资源,不过多占用资源就意味着依赖cpu的运算速度,所以怎么样能够充分有效的使用空间和资源就成为一个程序员必须要考虑的事情

   内联函数 什么是内联(inline),内联就是把相应代码镶嵌在适当位置,因为函数调用是要建立栈的,所以为了避免过多的使用栈内存,就考虑使用内联函数

 

#include <iostream>
#include "property.h"

using namespace std;
//------------------------------
 bool ischar(char);//函数声明
//------------------------------
int main()
{
    char c;
    cout << "Hello world!" << endl;

    cout<<"请输入一个字符,不能输入回车符或者或者换行符"<<endl;
    while(cin>>c&&c!='\n'){
       if(ischar(c))
       cout<<"字符输入正确"<<endl;
       else
       cout<<"字符输入过小"<<endl;
    }

    /**
    int x[1000],y[1000],z[1000];
     for(int i=0;i<1000;i++)
     for(int j=0;j<1000;j++)
     for(int k=0;k<1000;k++)
     z[i]=countnumber1(j,k);
*/
    while(1);
    return 0;
}
bool ischar(char ch){
   return ch>'0'&&ch<='9'?1:0;
}
当前的程序中是一个普通函数,不是内联函数,函数是被主函数main多次调用,所以程序的开销就大了 
 

#include <iostream> #include "property.h"

using namespace std; //------------------------------  bool ischar(char);//函数声明 无内联 //------------------------------ int main() {     char c;     cout << "Hello world!" << endl;

    cout<<"请输入一个字符,不能输入回车符或者或者换行符"<<endl;     while(cin>>c&&c!='\n'){        if(ischar(c))        cout<<"字符输入正确"<<endl;        else        cout<<"字符输入过小"<<endl;     }

    /**     int x[1000],y[1000],z[1000];      for(int i=0;i<1000;i++)      for(int j=0;j<1000;j++)      for(int k=0;k<1000;k++)      z[i]=countnumber1(j,k); */     while(1);     return 0; } inline bool ischar(char ch){  //此处内联     return ch>'0'&&ch<='9'?1:0; }

 对函数声明必须在调用之前,因为在内联函数在执行是在镶嵌在调用处执行的,调用处并没有把内联函数作为一个函数来使用,只是把内联函数函数体代码镶嵌在调用处执行的,当前函数声明并无内联,而在函数实现处才标识该函数为内联函数,所以当前的函数只是作为一个普通函数使用,正确的方式应该是这样的

#include <iostream>
#include "property.h"

using namespace std;
//------------------------------
 inline bool ischar(char);//函数声明 无内联
//------------------------------
int main()
{
    char c;
    cout << "Hello world!" << endl;

    cout<<"请输入一个字符,不能输入回车符或者或者换行符"<<endl;
    while(cin>>c&&c!='\n'){
       if(ischar(c))
       cout<<"字符输入正确"<<endl;
       else
       cout<<"字符输入过小"<<endl;
    }

    /**
    int x[1000],y[1000],z[1000];
     for(int i=0;i<1000;i++)
     for(int j=0;j<1000;j++)
     for(int k=0;k<1000;k++)
     z[i]=countnumber1(j,k);
*/
    while(1);
    return 0;
}
 bool ischar(char ch){  
    return ch>'0'&&ch<='9'?1:0;
}

内联函数使用场合

   函数体小,这样嵌入工作容易进行,不会破坏原调用主体

  程序调用特别是反复调用,这样使嵌入的效率更高

  程序并不多处调用,这样嵌入工作量相对较少,代码量也不会剧增

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值