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

  • 华为手机怎么查找定位网址(华为手机怎么查看电池容量)

    华为手机怎么查找定位网址(华为手机怎么查看电池容量)

  • 安卓手机可以用airpods吗(安卓手机可以用ChatGPT)

    安卓手机可以用airpods吗(安卓手机可以用ChatGPT)

  • 华为nova4e杂志锁屏怎么关闭(华为nova4e杂志锁屏的图片在哪里?)

    华为nova4e杂志锁屏怎么关闭(华为nova4e杂志锁屏的图片在哪里?)

  • 苹果怎么下载谷歌商店(苹果怎么下载谷歌相机)

    苹果怎么下载谷歌商店(苹果怎么下载谷歌相机)

  • iphonexr怎么插两个卡(iponexr怎么插两张卡)

    iphonexr怎么插两个卡(iponexr怎么插两张卡)

  • win10桌面文件夹路径是什么(win10桌面文件夹路径)

    win10桌面文件夹路径是什么(win10桌面文件夹路径)

  • 快手小黄车必须交保证金吗(快手小黄车必须有营业执照吗)

    快手小黄车必须交保证金吗(快手小黄车必须有营业执照吗)

  • 淘宝618什么时间开始(淘宝618什么时间段最便宜)

    淘宝618什么时间开始(淘宝618什么时间段最便宜)

  • fbx格式用什么软件打开(fbx格式用什么软件生成)

    fbx格式用什么软件打开(fbx格式用什么软件生成)

  • iphone突然发热很厉害(苹果手机突然发热严重是怎么回事)

    iphone突然发热很厉害(苹果手机突然发热严重是怎么回事)

  • 为啥微信背景是黑色的(为啥微信背景是黑色的?如何更换?)

    为啥微信背景是黑色的(为啥微信背景是黑色的?如何更换?)

  • 路由器怎么关闭5g(路由器怎么关闭重启)

    路由器怎么关闭5g(路由器怎么关闭重启)

  • 百兆和千兆路由器区别(百兆和千兆路由器怎么区分)

    百兆和千兆路由器区别(百兆和千兆路由器怎么区分)

  • 手机淘宝怎么备注留言(手机淘宝怎么备注订单)

    手机淘宝怎么备注留言(手机淘宝怎么备注订单)

  • qq卸载了聊天记录还在吗(qq卸载了聊天记录没有了怎么恢复)

    qq卸载了聊天记录还在吗(qq卸载了聊天记录没有了怎么恢复)

  • 闲鱼的擦亮是什么意思(闲鱼的擦亮什么时候最好)

    闲鱼的擦亮是什么意思(闲鱼的擦亮什么时候最好)

  • powerpoint是哪个公司的产品(powerpoint叫什么)

    powerpoint是哪个公司的产品(powerpoint叫什么)

  • ps滤镜怎么安装(ps滤镜怎么安装到电脑上)

    ps滤镜怎么安装(ps滤镜怎么安装到电脑上)

  • dubal00a是什么机型(dubal00是什么型号)

    dubal00a是什么机型(dubal00是什么型号)

  • 拼多多评价过滤解决方法(拼多多评价过滤逻辑)

    拼多多评价过滤解决方法(拼多多评价过滤逻辑)

  • 朋友圈被收藏能知道吗(朋友圈收藏能加密吗)

    朋友圈被收藏能知道吗(朋友圈收藏能加密吗)

  • 荣耀note10什么时候更新9.0(荣耀note10现在值得入手吗)

    荣耀note10什么时候更新9.0(荣耀note10现在值得入手吗)

  • 华为p30和p30pro差距(华为p30和p30pro对比哪个好)

    华为p30和p30pro差距(华为p30和p30pro对比哪个好)

  • 什么协议是提供不可靠的数据传输(什么协议是提供服务的)

    什么协议是提供不可靠的数据传输(什么协议是提供服务的)

  • 马瑙斯附近的亚马逊河流域鸟瞰图,巴西 (© Art Wolfe/Danita Delimont)(马瑙斯市)

    马瑙斯附近的亚马逊河流域鸟瞰图,巴西 (© Art Wolfe/Danita Delimont)(马瑙斯市)

  • 什么是增值税扣缴义务
  • 增值税发票丢失最新处理办法
  • 树苗应计入什么科目里面
  • 2020劳务退税怎么退
  • 核定征收的收入总额包括营业外收入吗
  • 员工在社保局报备流程
  • 汇算清缴预提费用调整政策
  • 公司预存话费应该怎么做会计处理?
  • 旧设备变现损失抵减所得税怎么算
  • 医疗器械销售初次拜访话术
  • 股东变动及股东情况章节
  • 暂估收入会计处理
  • 获赠或继承来的房屋以后再转让
  • 公司低价卖房土地增值税计税方法是什么
  • 税收征管法关于全款未收房的规定
  • 建筑服务税率是5
  • 发放职工福利的会计科目
  • 咨询费如何入账
  • 我的初级备考经历怎么写
  • 收到股东交的多余的股金怎么做账务处理
  • 企业增加的留存收益计入
  • 事业单位负债类科目包括哪些科目
  • 固定资产转在建工程提折旧吗
  • 两免三减半条件
  • mac可以制作win启动盘吗
  • 为什么系统弹出登录此网络
  • 转出未交增值税借方余额表示什么
  • 企业发行股票的会计分录
  • 银行罚息计入什么会计科目
  • PHP:getimagesize()的用法_GD库图像处理函数
  • 一般纳税企业增值税计算
  • 行政事业单位 银行
  • php实现文件上传需要使用哪个全局变量
  • h5移动端网页设计
  • trace命令详解
  • php static变量
  • 社保的残保金的用途
  • 图文详解管道支架制作安装标准
  • 投资性房地产由成本模式转为公允价值模式差额计入
  • 去年留抵税额会计分录
  • 期末应交增值税的会计科目怎么做
  • 2020年工资标准表
  • 发票隔月可以重开吗
  • 房租预付款会计分录
  • 异价调拨什么意思
  • 非公司股东可以分红吗
  • 产权转移书据印花税减免政策
  • 公司账户的钱怎么合理的转出来
  • 收到社会保险基金结算表
  • 怎样分辨假钱
  • 资产计提减值如何进行账面记录
  • 财务费用在贷方负数表示什么
  • 工资费用核算的原始记录有
  • 以前年度损益调整结转到本年利润吗
  • 发票 发票专用章
  • 税局代开专用发票时交的钱如何记账?
  • 公司暂估成本分录
  • 进口增值税当月可以抵扣吗
  • mysql 5.7.33安装
  • freebsd wifi设置
  • watchs2最新版本
  • centos6关闭图形界面
  • win7系统打印机共享给win10
  • win8 蓝牙
  • 怎么处理人际关系
  • 239mbps是多少兆网速
  • cocos安装
  • 奇门遁甲实例详解
  • unity3d 物体移动
  • iframe的替代方案
  • python快速上手 自动化
  • 很不错的两款Bootstrap Icon图标选择组件
  • 技术总结2000字
  • Python内置的HTTP协议服务器SimpleHTTPServer使用指南
  • 火狐firefox浏览器官网
  • jquery访问本地html
  • 国家税务总局网站官网福建税务局
  • 进口汽车零部件编码查询
  • 租房完税证明需要房东交钱吗?
  • 马达加斯加秒懂百科
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设