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

  • 博客营销中需要深思的问题(博客营销中需要注意哪些)

    博客营销中需要深思的问题(博客营销中需要注意哪些)

  • 真我q3s怎么设置隐私替身(真我Q3s怎么设置隐藏相册)

    真我q3s怎么设置隐私替身(真我Q3s怎么设置隐藏相册)

  • 苹果13键盘下面空白怎么去掉(苹果13键盘下面灰色怎么去掉)

    苹果13键盘下面空白怎么去掉(苹果13键盘下面灰色怎么去掉)

  • 小米mix3小爱同学声音怎么变换(小米note3小爱同学)

    小米mix3小爱同学声音怎么变换(小米note3小爱同学)

  • 抖音怎么置顶关注(抖音怎么置顶关注的人评论)

    抖音怎么置顶关注(抖音怎么置顶关注的人评论)

  • 淘宝龄怎么看(如何查淘宝淘龄)

    淘宝龄怎么看(如何查淘宝淘龄)

  • 苹果11pro是几g运行(苹果11pro是多大的运行内存)

    苹果11pro是几g运行(苹果11pro是多大的运行内存)

  • 笔记本电脑开合轴坏了(笔记本电脑开合处裂开)

    笔记本电脑开合轴坏了(笔记本电脑开合处裂开)

  • 视频动态怎么保存到手机(视频动态怎么保存)

    视频动态怎么保存到手机(视频动态怎么保存)

  • 淘宝的id账号在哪里看(淘宝id帐号)

    淘宝的id账号在哪里看(淘宝id帐号)

  • 钉钉视频有回放吗(钉钉视频有回放是不是不能发言了)

    钉钉视频有回放吗(钉钉视频有回放是不是不能发言了)

  • 戴尔一体机开不了机(戴尔一体机开不开机怎么办)

    戴尔一体机开不了机(戴尔一体机开不开机怎么办)

  • 为什么微信突然发不了信息怎么办(为什么微信突然下线了 再重新登录没提示)

    为什么微信突然发不了信息怎么办(为什么微信突然下线了 再重新登录没提示)

  • pcie和sata的区别(pcie协议和sata协议哪个好)

    pcie和sata的区别(pcie协议和sata协议哪个好)

  • 电话卡不用了还会扣费吗(电话卡不用了还有话费怎么办)

    电话卡不用了还会扣费吗(电话卡不用了还有话费怎么办)

  • ipad pro充不进电怎么回事(ipad pro充不进电一只黑屏)

    ipad pro充不进电怎么回事(ipad pro充不进电一只黑屏)

  • 浏览器为什么使用时产生多个进程(为什么浏览器用不了?)

    浏览器为什么使用时产生多个进程(为什么浏览器用不了?)

  • 华为freebud和荣耀flypods耳机对比(freebuds3和荣耀手机匹配吗)

    华为freebud和荣耀flypods耳机对比(freebuds3和荣耀手机匹配吗)

  • 交管12123支付页面打不开(交管12123支付页面为什么只有农行)

    交管12123支付页面打不开(交管12123支付页面为什么只有农行)

  • 华为如何关闭旁白模式(华为如何关闭旁白黑屏模式)

    华为如何关闭旁白模式(华为如何关闭旁白黑屏模式)

  • 关机后还收得到微信吗(关机后还收得到短信吗)

    关机后还收得到微信吗(关机后还收得到短信吗)

  • gtx1050是什么意思

    gtx1050是什么意思

  • 考勤管理app对于企业有哪些好处(考勤管理工具)

    考勤管理app对于企业有哪些好处(考勤管理工具)

  • 普利特维采湖群国家公园中的高架步道,克罗地亚 (© Alessandro Laporta/Offset by Shutterstock)(普利特维采湖群国家公园天气)

    普利特维采湖群国家公园中的高架步道,克罗地亚 (© Alessandro Laporta/Offset by Shutterstock)(普利特维采湖群国家公园天气)

  • HTML - 扫盲(htmlspecialchars_decode)

    HTML - 扫盲(htmlspecialchars_decode)

  • GPT4来了,多模态模型上线(gpt3模型大小)

    GPT4来了,多模态模型上线(gpt3模型大小)

  • 一般纳税人做账流程图
  • 增值税的账务处理办法
  • 公司食堂辅助账怎么记账
  • 购买地瓜
  • 广告公司开票能开劳务费吗
  • 供应商租赁企业资质要求
  • 基建项目待摊投资
  • 房屋及建筑物原值计算
  • 一般纳税人增值税优惠政策
  • 机构股东入股资金流向
  • 公司购买灯具的会计分录
  • 没领税票会产生税吗
  • 外企企业所得税怎么计算
  • 计税工资和实发工资比例
  • 专项储备期末有余额吗
  • 建筑业月末账务处理
  • 个人出租房屋给公司可以开专票吗
  • 计提房租的原始凭证包括
  • 挂靠别人的资质进行房屋建筑会计怎样做账?
  • 收到的产品返利怎么做账
  • 建筑工程劳务费占比例
  • 新版edge浏览器如何恢复设置
  • 跨境电商小规模与一般纳税人
  • PHP:mb_ereg_search_getregs()的用法_mbstring函数
  • 文竹浇白糖水的正确方法
  • ipcservice.dll是什么?
  • 路由器重启以后wifi不见了
  • from origin ‘null‘ has been blocked by CORS policy: Cross origin requests are only supported for ...
  • php中自定义函数
  • 原材料科目是什么意思
  • 火灾造成存货损失应该作为报废还是盘亏
  • 应收账款债权融资计划业务操作指引
  • 受赠与获赠的区别
  • Uniapp使用$base方法
  • 企业发生的现金折扣应计入什么费用
  • 公链dapp
  • linux嵌入式开发教程
  • php图像识别
  • laravel使用了哪些设计模式
  • 企业对于预支工资的建议
  • 公司一季度报表
  • 公司费用计入什么科目
  • python中Plotly Express是什么?
  • 吃饭的票如何写报销单
  • 公司如何帮员工补缴社保
  • sqlserver2005数据库导出数据成.sql
  • mysql导入sql文件命令
  • 营业收入是指从全部营业收入中扣除
  • 收到分红的会计科目
  • 存货资产评估方法
  • 生产企业免抵退是什么意思
  • 工会经费通过应交税费核算吗
  • 仓库盘点后的数据怎么处理
  • 印花税不小心申报几次怎么办
  • 个人所得税多计提怎样冲销
  • 房租已付未收发票可以待摊费用吗
  • 买税盘的分录
  • 定额发票累计领取怎么算
  • 固定资产的调整科目
  • mysql常见语句总结
  • mySQL中in查询与exists查询的区别小结
  • secbizsrv.exe是什么程序
  • win7还是win8好用
  • win7升级win10黑屏
  • Ubuntu 12.04安装Xen常见问题及解决方法汇总
  • linux me
  • xp死机不动
  • centos云服务器
  • linux必学的60个命令及使用
  • libproj.so
  • cocos jsc
  • jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
  • android常见面试题及答案
  • html&js+前端
  • 在unity中单例的主要作用
  • 深入理解javascript特性
  • python里面颜色
  • 宁波地铁支付宝可以刷吗
  • 吉林省工伤保险咨询电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设