位置: IT常识 - 正文

C++ inline(CINLINELE工具)

编辑:rootadmin
1.inline可以免除函数调用时的保存上下文时的一些开销,其本质就是对此函数的每一个调用都以函数本体替换之。 inline的坏处:若在一台内存有限的机器上,过度热衷inlining会造成程序体积太大,即使拥有虚拟内存,inline造成的代码膨胀也会导致额外的换页行为,降低指令高速缓存装置的集中率, ... 1.inline可以免除函数调用时的保存上下文时的一些开销,其本质就是对此函数的每一个调用都以函数本体替换之。

inline的坏处:若在一台内存有限的机器上,过度热衷inlining会造成程序体积太大,即使拥有虚拟内存,inline造成的代码膨胀也会导致额外的换页行为,降低指令高速缓存装置的集中率,以及伴随这些而来的效率。

但是好处是,如果inline函数的本体很小,编译器针对函数本体所产出的码可能比函数调用所需要的开销等所产出的码更小。那么inlining函数可以导致较小的目标码和较高的指令告诉缓存装置击中率。

inline只是对编译器的一个申请,不是强制命令。这项申请可以隐喻提出,也可以明确提出。

隐喻方式

class person{ public: int age() const {return theAge;} private: int theAge;}

这样的函数通常是成员函数。

明确方式template<typename T>inline const T& std::max(const T& a, const T& b){ return a<b?b:a;}

有关键字在开头。

使用inline后,编译器会根据代码来判断是否可以inlining,inlining在大多数C++程序中是编译期行为。非常少部分是运行期行为。

2.inline是个申请,编译器可加以忽略。大部分编译器拒绝将太过复杂(例如带有循环或递归)的函数inlining,而对所有虚函数(除非是最平淡无奇的)也都会使得inlining落空。因为virtual意味着“等待,直到运行期才确定调用哪个函数”,而inline意味着执行前,先将动作替换为被调用函数的本体。如果编译器不知道该调用哪个函数,则没办法将函数本体inlining。

与此并提的是,编译器通常不对“通过函数指针而进行的调用”实施inlining,这意味着对inline函数的调用有可能被inlined,也可能不被inlined,取决于实施方式。

inline void f() {...}void (*pf) () = f;​...f(); //将被调用,其是一个正常调用pf(); //这个或许不被调用,因为它通过函数指针达成

3.最后,如果想inline类的构造函数,析构函数得再三考虑。因为C++对于“对象被创建和被销毁时发生了什么事”做了各式各样的保证。当你使用new,动态创建的对象被其构造函数自动初始化;当你使用delete,对应的析构函数会被调用。当你创建一个对象,其每一个base class以及每一个成员变量都会被自动构造;当你消费一个对象时,反向程序的析构行为也会自动发生。如果有个异常在对象构造期间被抛出,该对象已构造好的那一部分也会被自动销毁。在这些情况中C++描述了什么一定会发生,但没有说如何发生。事情如何发生事由编译器实现者的权责,不过至少有一点很清楚,那就是他们不可能凭空发生。在你的程序内一定有某些代码能让那些事情发生,而那些代码——由编译器于编译期间代为产生并安插到你的程序中的代码——肯定存在某个地方,有时候就放在你的构造函数和析构函数内。

推荐整理分享C++ inline(CINLINELE工具),希望有所帮助,仅作参考,欢迎阅读内容。

C++ inline(CINLINELE工具)

文章相关热门搜索词:C++ inline后反而变慢了,CINLINELE是什么牌子工具,C++ inline函数的定义一定要写在头文件里面吗?,C++ inline关键字,C++ inline关键字,C++ inline的好处,C++ inline后反而变慢了,C++ inline关键字,内容如对您有帮助,希望把文章链接给更多的朋友!

实际上的Derived()

4.inline函数本质上是将代码在编译期间写入调用函数内,故如果被inline的函数f()更改,那么调用过f()的函数都得重新编译。这是一个大问题,需要考虑。而被调用的函数如果是以正常的头文件调用形式的话(即non_inlined)那么只要修改头文件,重新链接库即可。

本文链接地址:https://www.jiuchutong.com/zhishi/309231.html 转载请保留说明!

上一篇:python中np.insert()函数的使用方法(python中insert函数怎么用)

下一篇:python字典中添加新的键值(python字典添加数据)

  • 抖音直播怎么开始(抖音直播怎么开声音)

    抖音直播怎么开始(抖音直播怎么开声音)

  • 苹果11的特点(苹果11的特点与优点)

    苹果11的特点(苹果11的特点与优点)

  • 锂电池并联缺陷(锂电池并联方案)

    锂电池并联缺陷(锂电池并联方案)

  • 读取通话状态和移动网络信息什么意思(读取通话状态和移动网络信息权限)

    读取通话状态和移动网络信息什么意思(读取通话状态和移动网络信息权限)

  • 电脑桌面上的图标只能看到一半(电脑桌面上的图标打不开怎么回事)

    电脑桌面上的图标只能看到一半(电脑桌面上的图标打不开怎么回事)

  • 蓝牙耳机触摸键在哪(蓝牙耳机触摸键功能介绍)

    蓝牙耳机触摸键在哪(蓝牙耳机触摸键功能介绍)

  • 一个身份证可以绑定几个b站(一个身份证可以开几个淘宝店铺)

    一个身份证可以绑定几个b站(一个身份证可以开几个淘宝店铺)

  • 手机进水后还能使用有没有什么影响(手机进水后还能正常使用有问题吗)

    手机进水后还能使用有没有什么影响(手机进水后还能正常使用有问题吗)

  • 显卡驱动日期什么意思(显卡的驱动日期是什么)

    显卡驱动日期什么意思(显卡的驱动日期是什么)

  • mq8f2ch a是什么版本(mq8d2zp/a是什么版本)

    mq8f2ch a是什么版本(mq8d2zp/a是什么版本)

  • 抖音答题提示设备异常(抖音答题又开始了)

    抖音答题提示设备异常(抖音答题又开始了)

  • 进程的三种基本状态的含义(进程的三种基本状态是运行状态就绪状态和什么状态)

    进程的三种基本状态的含义(进程的三种基本状态是运行状态就绪状态和什么状态)

  • 联通卡半年没用还可以补办吗(联通卡半年没用无服务了)

    联通卡半年没用还可以补办吗(联通卡半年没用无服务了)

  • 微博私信聊天记录找回(微博私信聊天记录恢复)

    微博私信聊天记录找回(微博私信聊天记录恢复)

  • 淘宝以前的订单怎么查看(淘宝以前的订单怎么查看物流)

    淘宝以前的订单怎么查看(淘宝以前的订单怎么查看物流)

  • 苹果手机怎么关闭自拍镜像(苹果手机怎么关机)

    苹果手机怎么关闭自拍镜像(苹果手机怎么关机)

  • 通过扫一扫添加的好友是咋回事(通过扫一扫添加的好友,对方没通过)

    通过扫一扫添加的好友是咋回事(通过扫一扫添加的好友,对方没通过)

  • 荣耀v20支持防水吗(荣耀v20防水等级是多少)

    荣耀v20支持防水吗(荣耀v20防水等级是多少)

  • 省钱月卡怎么退款(美团省钱月卡怎么退)

    省钱月卡怎么退款(美团省钱月卡怎么退)

  • vivoy51安全模式怎么关闭(vivoy51安全模式怎么回事啊)

    vivoy51安全模式怎么关闭(vivoy51安全模式怎么回事啊)

  • vivoy97后面有指纹吗(vivo手机有哪几款)

    vivoy97后面有指纹吗(vivo手机有哪几款)

  • Mac系统如何卸载预装软件?Mac预装软件卸载教程(MAC系统如何卸载重装安装W7系统)

    Mac系统如何卸载预装软件?Mac预装软件卸载教程(MAC系统如何卸载重装安装W7系统)

  • Win10 2004/20H2版本Build 19042.906 累积更新补丁KB5000842推送(win10版本2004和20h2)

    Win10 2004/20H2版本Build 19042.906 累积更新补丁KB5000842推送(win10版本2004和20h2)

  • 电脑学习网首发cdnfly-cdn系统通过改hosts破解授权方法,随时可能失效,抓紧下载-电脑学习网破解(网上学电脑的软件)

    电脑学习网首发cdnfly-cdn系统通过改hosts破解授权方法,随时可能失效,抓紧下载-电脑学习网破解(网上学电脑的软件)

  • 个税待报解预算收入怎么使用
  • 企业所得税广告费30%扣除
  • 原材料报废可以退税吗
  • 会计账簿错弊有哪些
  • 超市的库存商品分类混乱怎么看出来的
  • 预缴所得税年底怎么结转
  • 有主营业务收入就一定有销项税吗
  • 2019年所得税季度增值税怎么报
  • 企业清算所得税申报表清算期间
  • 哪些固定资产不需要计提折旧
  • 长期负债率分析
  • 结转完工入库产品成本计算
  • 集团公司收到的发票
  • 红冲去年的收入怎么做账
  • 营业费用率说明什么
  • 主营业务成本如何算
  • 股东往来款怎么处理
  • 固定资产账载金额和税收金额的区别
  • 非独立核算分公司个税怎么申报
  • 公司注册核税后如何建账?
  • 一般纳税人开具房屋租赁费税率
  • 收到培训机构的电话骚扰该怎么办?
  • 委托加工物资手续费
  • 路由器ip分配数量
  • u盘启动盘如何分区
  • mac屏幕共享要打开什么权限
  • 单位交社保是不是比个人交社保以后退休金要多
  • 代理业务怎么记账
  • 哥本哈根的地形
  • 停车费过路费和汽油费可以一起报销吗
  • 微信小程序制作
  • 微信小程序云开发控制台
  • java web项目部署
  • 已申报未导入是什么情况
  • 企业基本户是对公账户吗
  • 代管资金如何做凭证
  • 免费赠送的产品报关金额
  • 合伙企业分红怎么做账
  • mysql存储过程 游标
  • 企业管理费会计怎么做账
  • 总分类科目的名称和核算内容
  • 收到保险公司退款
  • 小规模纳税人地方教育费附加税率
  • 给天猫开的服务怎么关闭
  • 房屋提折旧几年
  • 怎样暂估成本的会计分录
  • 给员工打了备用金后归还怎么做账
  • 印花税缴款了发票怎么查
  • 印花税不足一元免征吗
  • 补交以前年度增值税如何入账
  • 国家土地补偿款
  • 股权转让的实质
  • 资金信息综合服务
  • 收到加盟费怎么开票入账
  • 团体意外保险能赔多少钱
  • 公司向股东借款多久必须归还
  • LNMP下使用命令行导出导入MySQL数据库的方法
  • 详解十二建星择日方法
  • fedora32
  • 索尼vaio笔记本无法开机
  • 苹果系统怎么修改语言
  • window 80端口被占用
  • win1020th2
  • 安装WIN10系统后怎么调过设置
  • perl uc,lc,ucfirst,lcfirst大小写转换函数
  • js入门基础
  • perl localtime函数
  • opengl es 2.0是什么
  • android-3
  • linux 部署
  • node的理解
  • python里的lambda怎么用
  • 百旺怎么导出数据
  • 广东税务APP实名可以注册两个吗?
  • 网上跨区预缴
  • 铁路货运的费用有哪些
  • 税务网络安全制度
  • 誊抄什么意思
  • 深圳2021纳税
  • 冀地是哪里
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设