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

  • 浅谈团购网站成功运营的4种方法(浅谈团购网站成功的原因)

    浅谈团购网站成功运营的4种方法(浅谈团购网站成功的原因)

  • 如何取消支付宝的自动扣费服务(如何取消支付宝刷脸支付功能)

    如何取消支付宝的自动扣费服务(如何取消支付宝刷脸支付功能)

  • qq里sgr是什么意思(serqq是什么)

    qq里sgr是什么意思(serqq是什么)

  • 荣耀9a和9x对比(华为荣耀9x和荣耀9a的区别)

    荣耀9a和9x对比(华为荣耀9x和荣耀9a的区别)

  • 手机设置黑名单后还能收到短信吗(手机设置黑名单后对方听到的是)

    手机设置黑名单后还能收到短信吗(手机设置黑名单后对方听到的是)

  • 网上展览设计原则是什么??(网上展览设计原则)

    网上展览设计原则是什么??(网上展览设计原则)

  • 华为荣耀30s可以无线充电吗(华为荣耀30s可以装内存卡吗)

    华为荣耀30s可以无线充电吗(华为荣耀30s可以装内存卡吗)

  • 电视芒果tv会员和手机不能通用吗

    电视芒果tv会员和手机不能通用吗

  • 苹果手机开了勿扰模式打电话会怎么提示(苹果手机开了勿扰模式微信还会响吗)

    苹果手机开了勿扰模式打电话会怎么提示(苹果手机开了勿扰模式微信还会响吗)

  • 微信双方都拉黑对方再怎么加上(微信双方都拉黑头像变灰白)

    微信双方都拉黑对方再怎么加上(微信双方都拉黑头像变灰白)

  • 双十一不发货怎么办(双十一买东西不发货)

    双十一不发货怎么办(双十一买东西不发货)

  • 全民k歌下载别人的歌别人会知道吗(全民k歌下载别人的歌曲)

    全民k歌下载别人的歌别人会知道吗(全民k歌下载别人的歌曲)

  • 淘宝可以申请几次换货(淘宝可以申请几次价保)

    淘宝可以申请几次换货(淘宝可以申请几次价保)

  • 怎么使用uc看小电影(uc看的)

    怎么使用uc看小电影(uc看的)

  • 手机怎么复制图片(手机怎么复制图片上的文字)

    手机怎么复制图片(手机怎么复制图片上的文字)

  • lin线标准电压是多少(lin线工作电压一般为9v)

    lin线标准电压是多少(lin线工作电压一般为9v)

  • 微博为什么登不上(微博为什么登不上去加载不了)

    微博为什么登不上(微博为什么登不上去加载不了)

  • thx是什么意思

    thx是什么意思

  • 荣耀手环3怎么恢复设置(荣耀手环3怎么调整时间)

    荣耀手环3怎么恢复设置(荣耀手环3怎么调整时间)

  • 苹果怎么删除云盘照片(苹果怎么删除云备份)

    苹果怎么删除云盘照片(苹果怎么删除云备份)

  • 国外微信号和国内微信号的区别(国外微信号国内可以搜到吗)

    国外微信号和国内微信号的区别(国外微信号国内可以搜到吗)

  • 华为p30pro有哪些功能(华为p30pro有哪些强大的功能)

    华为p30pro有哪些功能(华为p30pro有哪些强大的功能)

  • 淘宝上如何申请退款(淘宝上如何申请售后)

    淘宝上如何申请退款(淘宝上如何申请售后)

  • vivoy3怎么反向充电(vivoy73s反向充电怎么弄)

    vivoy3怎么反向充电(vivoy73s反向充电怎么弄)

  • 装系统时由于分区软件造成的故障是什么(电脑装系统分区出现错误)

    装系统时由于分区软件造成的故障是什么(电脑装系统分区出现错误)

  • ChatGPT进阶-提示词中文版

    ChatGPT进阶-提示词中文版

  • 开小卖部怎么报税
  • 核定征收需要缴税吗
  • 金税四期对小规模纳税人
  • 劳务成本算营业成本吗
  • 税金及附加包括什么
  • 税总界定超标准小规模纳税人偷税数额
  • 发票丢失怎么做分录
  • 银行汇票使用流程举例
  • 公司购入空调可以抵扣进项吗
  • 企业收到退回商品的会计分录
  • 单位购置汽车如何入账
  • 新公司第一个月报税怎么弄
  • 出口退税征税
  • 公司车辆怎么申请
  • 电子发票如何查询发票代码
  • 金税盘费用如何抵扣
  • 所得税汇算清缴退款账务处理
  • 汇算清缴发票可以做费用票吗
  • 劳务报酬所得缴多少税
  • 小规模纳税人印花税怎样计算
  • 付款网站制作
  • 花卉租赁属于哪个税目
  • 发放股票股利会增加流通在外股票的数量
  • uniapp微信小程序支付流程
  • win11如何调整鼠标中键
  • jdk1.8环境变量设置
  • 商业成本结转会计分录
  • php sql 教程
  • 生产物料报废
  • 如何抓好工程建设
  • monaco编辑器的自定义提示
  • idea添加web项目
  • 保险补偿金额的计算
  • 怎样取消红字
  • 鸳鸯小鸟
  • 个税系统怎么查询已申报个人明细
  • 外购无形资产账务处理
  • docker_practice
  • 会计成本确认
  • 帝国主义
  • 职工福利费的作用
  • 对账小技巧
  • 企业付的房租税费会计分录
  • 以前年度损益调整借贷方向
  • 月初包括哪几天
  • 限制性股票应纳税额的确定
  • 如何在科目余额表中查询给另一家公司付了多少钱
  • 进项税转出企业所得税调减么
  • 发票怎么跨月作废申请
  • 固定资产的计提折旧方法有哪些
  • 公益性捐赠要确认递延吗
  • 税务局退以前年度的税款怎样记账
  • 关于合同履约成本的表述错误的有
  • 筹建期业务招待费的扣除标准
  • 公司购买购物卡账务处理
  • 登记生产成本和制造费用的明细账
  • mysql连接时间长怎么优化
  • sql server数据存放位置
  • windows自动操作软件
  • centos查看硬盘信息的命令
  • win8系统如何查看电脑内存
  • linux常用命令 删除
  • xp怎么安全模式
  • win7检测有错误怎么办
  • cyb2k.exe是安全进程吗 cyb2k进程危险吗
  • windowsxp忘了登录密码
  • shcore.dll干啥用
  • mac命令行窗口怎么打开
  • centos7版本推荐
  • jquery的实现原理
  • AndroidSharedpreference数据共享
  • linux磁盘空间满了怎么办,硬盘空间还有很多
  • python3 bytes类型
  • python的应用程序
  • js知识总结
  • javascript怎么学好
  • JQuery解析XML的方法小结
  • 深圳如何打印个人征信
  • 税务和海关哪个单位比较好
  • 国家管网集团下属企业
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设