位置: 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字典添加数据)

  • 空调出风口滴水怎么消除(空调出风口滴水怎么回事)(空调出风口滴水还能继续开吗)

    空调出风口滴水怎么消除(空调出风口滴水怎么回事)(空调出风口滴水还能继续开吗)

  • 华为怎么显示电量百分之几(华为怎么显示电池健康)

    华为怎么显示电量百分之几(华为怎么显示电池健康)

  • 水印相机怎么修改已经拍好照片的时间(水印相机怎么修改文字)

    水印相机怎么修改已经拍好照片的时间(水印相机怎么修改文字)

  • 华为mate30pro丹霞橙是不是皮革的(华为mate30pro丹霞橙后盖脏了怎么办)

    华为mate30pro丹霞橙是不是皮革的(华为mate30pro丹霞橙后盖脏了怎么办)

  • 高清语音通话收费吗(高清语音通话收费吗电信)

    高清语音通话收费吗(高清语音通话收费吗电信)

  • 淘宝直播没有人观看怎么办(淘宝直播没有人互动怎么办)

    淘宝直播没有人观看怎么办(淘宝直播没有人互动怎么办)

  • 快手怎么重置自己的账号(怎么让快手重置)

    快手怎么重置自己的账号(怎么让快手重置)

  • i7 3960x用什么主板(i7 3960x游戏性能如何)

    i7 3960x用什么主板(i7 3960x游戏性能如何)

  • 钉钉小窗口播放会记录时间吗(钉钉小窗口播放暂停算时间吗)

    钉钉小窗口播放会记录时间吗(钉钉小窗口播放暂停算时间吗)

  • 华为一键关闭手电筒(华为一键关闭手电筒怎么设置)

    华为一键关闭手电筒(华为一键关闭手电筒怎么设置)

  • led灯光变暗了是什么原因(led 灯 变暗)

    led灯光变暗了是什么原因(led 灯 变暗)

  • 锤子手机死机了怎么办(锤子手机死机了什么原因)

    锤子手机死机了怎么办(锤子手机死机了什么原因)

  • 麒麟最高多少处理器(麒麟数量)

    麒麟最高多少处理器(麒麟数量)

  • word文档字怎么竖着(word文档字怎么对齐)

    word文档字怎么竖着(word文档字怎么对齐)

  • oppo手机通话记录不显示怎么回事(oppo手机通话记录怎么恢复)

    oppo手机通话记录不显示怎么回事(oppo手机通话记录怎么恢复)

  • 物联卡实名了怎么解除(物联卡实名怎么实名)

    物联卡实名了怎么解除(物联卡实名怎么实名)

  • 小米蓝牙耳机air怎么重置(小米蓝牙耳机air2 se)

    小米蓝牙耳机air怎么重置(小米蓝牙耳机air2 se)

  • xr是双卡吗(美版苹果xr是双卡吗)

    xr是双卡吗(美版苹果xr是双卡吗)

  • 小度怎么当监控摄像头(用小度怎么监控家里)

    小度怎么当监控摄像头(用小度怎么监控家里)

  • 苹果x漏液怎么办(iphonex漏液了)

    苹果x漏液怎么办(iphonex漏液了)

  • 抖音被拉黑了会怎样(抖音被拉黑对自己的帐户有没有影响)

    抖音被拉黑了会怎样(抖音被拉黑对自己的帐户有没有影响)

  • 黄石国家公园里的一只雄性山地蓝知更鸟,怀俄明州 (© Jason Savage/Tandem Stills + Motion)(黄石国家公园里的必玩项目)

    黄石国家公园里的一只雄性山地蓝知更鸟,怀俄明州 (© Jason Savage/Tandem Stills + Motion)(黄石国家公园里的必玩项目)

  • 前端项目如何部署到服务器实现网址访问(前端项目如何部署到服务器)

    前端项目如何部署到服务器实现网址访问(前端项目如何部署到服务器)

  • 金税盘如何交服务费
  • 印花税的账目处理
  • 预收款开发票,不确认收入可以吗?
  • 广告公司 印刷
  • 进项税额红字怎么做账
  • 母公司与子公司的区别
  • 被告承担诉讼费用
  • 企业一般户怎么注销
  • 怎么看医疗报销单
  • 不可修复废品损失会计分录
  • 销项进项怎么转化
  • 卖二手车怎么做账务处理
  • 代订机票款发票可以作为机票报销差旅吗
  • 未付款怎么说
  • 小企业发生销售折让的原因
  • 权益资本成本率计算
  • 合同和付款单位不一致发票应该开给谁
  • 银行手续费是否一定要开发票吗
  • 个人所得税返还奖励财务人员做账
  • 蔬菜销售收入免增值税吗
  • 农业免税企业怎么报税
  • 多计提的费用怎么冲销
  • 企业所得税汇算清缴扣除比例
  • 存货变卖残值取得的收益计入哪个科目
  • windows11开始菜单怎么居中
  • 鸿蒙系统图标底色变白
  • 周转材料属于什么会计分录
  • 上期有留抵进项税额会计分录
  • win10通知栏怎么设置
  • PHP:pg_escape_identifier()的用法_PostgreSQL函数
  • 笔记本电池消耗大怎么办
  • 闲置私家车出租APP
  • ubuntu npm安装
  • php 字节
  • 自然保护绘画
  • 小规模纳税人免税额度是多少
  • rgbt目标跟踪
  • 帝国cms如何判断图片有没有被使用
  • dedecms安装及配置
  • mysql性能监控工具和调优
  • 上传附报资料是哪些资料
  • 租赁公司一般都有什么税
  • 制造费用和生产成本结转
  • 购买金税盘是全额抵扣吗
  • 偿还银行贷款利息计算
  • sql server 2008中的权限分为三类
  • 工资薪金可以抵扣增值税吗
  • 购买礼品送客户取得普票怎么做账
  • 计提税金如何做凭证
  • 按差额征税
  • 股权变更的股东个税缴纳
  • 固定资产正常报废与非正常报废的会计处理基本相同
  • 个体工商户缴纳社保属于职工社保吗
  • 不交社保如何在网上投诉
  • 购买材料发生商损怎么算
  • 上期留抵税额可以留多久
  • 计入固定资产的条件
  • 广告制作费属于现代服务吗
  • 财务预算怎么做模板
  • 原材料科目怎么设置
  • mysqlgroupby用法解析详细
  • 在linux系统中安装软件
  • ubuntu 安装zsh
  • linux如何查看防火墙配置
  • 正在进行设备安装 win10安装打印机
  • win8.1技巧
  • win8.1安装包
  • Unity3d Asset Serialization 设置错误导致SVN文件不能同步
  • .json()
  • unity跨脚本调用函数
  • python随机数代码
  • android 签名文件冲突
  • vue中的计算属性forEach函数的使用
  • 打破游戏规则
  • js原型使用场景
  • 基于jQuery的AJAX和JSON实现纯html数据模板
  • 虚开增值税发票但未抵扣怎样处罚
  • 供给决定需求,需求影响供给
  • 签订设计合同
  • 煤矸石占地需要哪些手续
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设