- 主题:现代计算机存储空间增长很快,应该默认 inline
我个人觉得是这样
【 在 wanllow 的大作中提到: 】
: 原则上是不是高频使用的函数内联,低频使用的函数栈调用?
--
FROM 106.11.31.*
inline 已经不是常规理解上的替换了
--
FROM 36.110.46.*
怎么说?
【 在 namelij 的大作中提到: 】
: inline 已经不是常规理解上的替换了
--
FROM 120.37.20.*
【 在 hgoldfish 的大作中提到: 】
: 怎么说?
:
可能是这个意思
1 人为设定的inline,只是告诉编译器我要inline,最终编译出的结果不一定inline替换
2 c++17还是20之后,有一个inline变量,使得static变量定义和声明在一起
--
FROM 42.84.234.*
更多的是ODR规则,例如编译单元中函数加上inline,就不会出现冲突。以及类中静态成员初始化 加上inline 就不需要在外面重新声明定义。这些都是遵守了ODR
【 在 hgoldfish 的大作中提到: 】
: 怎么说?
:
--
FROM 36.110.46.*
现在增长快的是主内存.和inline效率强相关的是一级指令缓存的大小
一级缓存太小了,就是变大10倍也容不下过渡inline
【 在 hgoldfish 的大作中提到: 】
: 除非递归函数不能 inline, 不然大多数函数在编译的时候 inline 掉好像也不是啥坏事。
--
FROM 223.166.101.*
你只想到自己的一层调用,你没有考虑到实际中,会有很多层调用,如果都用inline代码会指数暴涨。
【 在 hgoldfish 的大作中提到: 】
: 除非递归函数不能 inline, 不然大多数函数在编译的时候 inline 掉好像也不是啥坏事。
发自「快看水母 于 iPhone 12」
--
FROM 223.104.40.*
inline有inline的好处,函数有函数的好处。
inline是把函数代码直接替换到原来的位置,每次cpu运行的时候都要把代码compile一次(是cpu的执行机器码的compile,不懂得去科普一下,不要抬杠)
函数是每次cpu都会跳转函数,在跳转得时候会查cache,如果在cache里就直接运行
所以,很显然,就是cache missing和code compile的取舍均衡。如果inline的函数比较复杂,又有if这种branch prediction会影响cpu并行队列的,那还是普通函数更好。
--
FROM 115.192.190.*