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

  • 浅谈九种有效的免费推广方法(如何进行有效)

    浅谈九种有效的免费推广方法(如何进行有效)

  • 电脑蓝牙怎么改名字(电脑蓝牙怎么用)(电脑怎么开蓝牙)

    电脑蓝牙怎么改名字(电脑蓝牙怎么用)(电脑怎么开蓝牙)

  • 松下电磁炉炒菜(松下电磁炉)(松下电磁炉炒菜怎么样)

    松下电磁炉炒菜(松下电磁炉)(松下电磁炉炒菜怎么样)

  • 苹果13个人热点在哪(苹果13个人热点可以连几个)

    苹果13个人热点在哪(苹果13个人热点可以连几个)

  • 苹果11戴口罩解锁怎么设置(苹果11戴口罩解锁怎么没有)

    苹果11戴口罩解锁怎么设置(苹果11戴口罩解锁怎么没有)

  • 苹果手表是怎么解锁手机面容的(苹果手表是怎么测心率的)

    苹果手表是怎么解锁手机面容的(苹果手表是怎么测心率的)

  • 苹果13有几款机型(苹果13有几款机型和价格128G)

    苹果13有几款机型(苹果13有几款机型和价格128G)

  • 荣耀x10和荣耀30的区别有哪些(荣耀x10和荣耀30青春版哪个好)

    荣耀x10和荣耀30的区别有哪些(荣耀x10和荣耀30青春版哪个好)

  • 荣耀9x支持华为pay支付吗(荣耀9x支持ip68吗)

    荣耀9x支持华为pay支付吗(荣耀9x支持ip68吗)

  • ccd相机是胶片机吗(ccd相机和胶片相机区别)

    ccd相机是胶片机吗(ccd相机和胶片相机区别)

  • 电脑可以看微信朋友圈吗(电脑可以看微信聊天记录吗)

    电脑可以看微信朋友圈吗(电脑可以看微信聊天记录吗)

  • 把一个人拉黑了还能收到信息吗(把一个人拉黑了能看到朋友圈吗)

    把一个人拉黑了还能收到信息吗(把一个人拉黑了能看到朋友圈吗)

  • 闲鱼拉黑名单了还能看见我的发布吗(闲鱼拉黑名单了还能下单吗)

    闲鱼拉黑名单了还能看见我的发布吗(闲鱼拉黑名单了还能下单吗)

  • qq音乐付费包和会员有什么区别(qq音乐付费包和绿钻)

    qq音乐付费包和会员有什么区别(qq音乐付费包和绿钻)

  • 微信怎么发4k视频(微信怎么发4k视频给好友)

    微信怎么发4k视频(微信怎么发4k视频给好友)

  • 手机千牛查看店铺积分(手机千牛怎么查看自己的店铺宝贝)

    手机千牛查看店铺积分(手机千牛怎么查看自己的店铺宝贝)

  • 苹果xs哪些设置可以关掉(苹果xs功能)

    苹果xs哪些设置可以关掉(苹果xs功能)

  • 快手怎么搜索主播(快手怎么搜索主播pk)

    快手怎么搜索主播(快手怎么搜索主播pk)

  • 手机上怎么交固话话费(如何在手机上交固话费)

    手机上怎么交固话话费(如何在手机上交固话费)

  • 抖音怎么加速本地视频(抖音怎么加速度)

    抖音怎么加速本地视频(抖音怎么加速度)

  • 12306的用户名可以修改吗(12306用户名可以是汉字吗)

    12306的用户名可以修改吗(12306用户名可以是汉字吗)

  • 9400f支持3200内存吗(9400f用3000hz内存)

    9400f支持3200内存吗(9400f用3000hz内存)

  • 手机QQ浏览器怎么编辑文件(手机qq浏览器怎么缩小页面比例)

    手机QQ浏览器怎么编辑文件(手机qq浏览器怎么缩小页面比例)

  • qq精选照片显示不了(qq精选照片显示暂时无法查看)

    qq精选照片显示不了(qq精选照片显示暂时无法查看)

  • 手机屏坏了怎么把东西导出来(手机屏坏了怎么把照片导入新手机)

    手机屏坏了怎么把东西导出来(手机屏坏了怎么把照片导入新手机)

  • 华为畅享9s有红外线功能吗(华为畅享9s有红外线遥控吗)

    华为畅享9s有红外线功能吗(华为畅享9s有红外线遥控吗)

  • 华为plk一al10什么型号(华为手机plkal10什么型号)

    华为plk一al10什么型号(华为手机plkal10什么型号)

  • 小程序中的生命周期有哪些?(小程序的生命周期函数有哪些)

    小程序中的生命周期有哪些?(小程序的生命周期函数有哪些)

  • 金融资产交易增值税
  • 城建税计税方法
  • 税务师考试各科老师推荐
  • 会计为什么要计折旧费
  • 所得税的营业收入包括哪些
  • 营改增后小规模纳税人涉税账务处理
  • 原材料的归集和整理
  • 即征即退免所得税吗
  • 金税盘的进项发票怎么导出
  • 在建工程完工结转
  • 期初余额什么时候在借方什么时候在贷方
  • 抬头是别的公司怎么报销
  • 一般纳税人选择简易计税进项税可以抵扣吗
  • 小区物业宿舍
  • 税务登记证遗失补办
  • 公户转账备注写错会查吗
  • 承兑汇票延期托收证明
  • 车辆违章罚款怎么入账
  • 华硕主板如何刷系统
  • win10内存完整性不兼容的驱动程序
  • 冲抵备用金
  • 上月材料入库会计分录
  • 鼠标灯亮但是鼠标失灵
  • 计提长期待摊费用的会计分录
  • u盘怎么安装软件
  • 在win7系统中将打开窗口拖到屏幕顶端
  • 库存现金清点怎么做
  • 借入长期借款的利息
  • 个人所得税有哪些可以减免的项目
  • thinkphp框架怎么用
  • php如何防止后门
  • 企业利润总额为负
  • 法人提取备用金多久归还
  • 长期待摊费用的摊销分录
  • 保险赔偿收入会计分录
  • 净现值与原始投资额现值
  • dedecms默认用户名
  • java第一步
  • mysql 测试
  • 佣金代扣代缴增值税如何计算
  • 摘要概括增值税专用发票的基本联次
  • 同一控制下企业合并发生的审计费用计入
  • 交强险怎么报警
  • sqlserver 自定义函数 读取数据表
  • mdf和ndf文件
  • 接受捐赠的材料计入什么科目
  • 会计中劳保用品是什么
  • 小规模个人所得税税率表2023年
  • 零退税率可以做免税吗
  • 办公楼开始建造前专门借款的利息费用
  • 购买农副产品抵扣进项税的规定
  • 所有者权益包括少数股东权益吗
  • 银行的现金解款需要多久
  • 替其他公司支付工资怎么做账
  • 净水设备配件计算方法
  • 怎么把应付账款冲平
  • 增值税结转是月结转还是年度
  • 子公司的亏损能算到母公司吗
  • 最新职工福利费列支范围
  • 外帐和内帐区别
  • mysql解压版
  • sql语句实现查询示例
  • windows7不能使用的文件名
  • 自己的磁盘
  • win7怎么查看
  • windows10预览版怎么样
  • linux apache 启动
  • win8系统崩溃无法开机
  • windows8ip地址怎么设置
  • ecxel进度条
  • fedora开机启动版本太多
  • shell操作
  • python 异步操作
  • node的全局变量有哪些
  • node.js的概念
  • androidx混淆
  • python调大小
  • 个人所得税房贷能退多少钱
  • 增+6=多少
  • 蓬莱市税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设