inline函数_C++核心准则编译边学-F.5 将小而时间敏感的函数定义为inline
发布日期:2021-10-31 07:32:04 浏览次数:3 分类:技术文章

本文共 1474 字,大约阅读时间需要 4 分钟。

b4081c8d4996dc469d6c34b7e9a7270e.png

F.5: If a function is very small and time-critical, declare it inline(如果函数非常小而且时间敏感,将其定义为inline)

Reason(原因)

Some optimizers are good at inlining without hints from the programmer, but don't rely on it. Measure! Over the last 40 years or so, we have been promised compilers that can inline better than humans without hints from humans. We are still waiting. Specifying inline encourages the compiler to do a better job.

有些优化程序擅长在程序员没有提示的时候就行inline处理,但是不要依靠这一点。算一下!差不多有四十年左右了,我们被许诺编译器可以在没有得到任何提示的情况下可以比人进行更好的inline处理。我们还在等。还是定义inline以便让编译器更好地工作吧。

Example(示例)

inline string cat(const string& s, const string& s2) { return s + s2; }

Exception(例外)

Do not put an inline function in what is meant to be a stable interface unless you are certain that it will not change. An inline function is part of the ABI.

不要将inline函数放进本来希望稳定的接口中,除非你确定它不会改变。inline函数也是ABI的一部分。

译者注:inline可能会随着实现方式的变化而隐式或显示的发生变化。

Note(注意)

constexpr implies inline.

constexpr也包含inline的意思。

Note(注意)

Member functions defined in-class are inline by default.

类声明中定义的函数默认是inline的。

译者注:关于inline函数,在《effective C++》中有详细的描述。

Exception(例外)

Template functions (incl. template member functions) are normally defined in headers and therefore inline.模板函数通常定义在头文件中,因此也是inline。

Enforcement(实施建议)

Flag inline functions that are more than three statements and could have been declared out of line (such as class member functions).标记那些超过3条语句且应该已经单独定义(例如类成员函数)的inline函数。


觉得本文有帮助?请分享给更多人。

更多更新文章,欢迎关注微信公众号【面向对象思考】

面向对象设计,面向对象编程,面向对象思考!

转载地址:https://blog.csdn.net/weixin_39934257/article/details/110712964 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:ipa签名软件_iPhone XR 越狱失败?免越狱签名软件来袭
下一篇:pythonfor循环是迭代器吗_python迭代器和for循环区别

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年03月28日 10时25分04秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

rt2tr matlab,MATLAB机器人工具箱参考 2019-04-21
MATLAB中GUI界面弹出菜单的使用,Matlab GUIDE使用说明(Matlab GUI界面) 2019-04-21
win iis对比apache php,服务器Apache与IIS的区别 2019-04-21
怎样用xampp测试php环境变量,使用xampp配置php运行环境的方法 2019-04-21
qq互联php教程,thinkphp5怎么整合qq互联登录教程 2019-04-21
python mod,mod_python的安装 2019-04-21
python分析彩票数据,这波太炸了!Python脚本可视化居然可以这么玩 2019-04-21
简单的mysql重置root密码,重置mysql的root密码最简单的方法 2019-04-21
用matlab仿真mmc环流抑制器,一种基于准PR控制原理的MMC阀组环流抑制方法 2019-04-21
oracle 排序的分析函数,Oracle SQL:使用分析排序函数 2019-04-21
oracle direct for hdfs xi下载,ORACLE连接HDFS有个专项的解决方案 2019-04-21
java 403怎么抛出_java – 如何在Spring MVC中返回403禁止? 2019-04-21
java jsch工具类_Java工具集-JSch连接远程服务器工具类 2019-04-21
cmd背景变红1003无标题_怎样修改cmd中文字的大小、颜色和背景颜色呢 原来是这样的... 2019-04-21
php rand() 重复,php – mt_rand()给我总是相同的数字 2019-04-21
php taglib.php,thinkphp5 taglib自定义标签教程 2019-04-21
java常用包类 array,Java中的StringBuffer和数组Arrays以及常用类型的包装类 2019-04-21
ctf常见php,CTF中常见的PHP伪协议 2019-04-21
php语言冒泡法,PHP 冒泡排序法 2019-04-21
php如何数组去重复,PHP如何去除数组重复元素? 2019-04-21