Jus*_*ers 2 c c++ optimization inline
我对在C和C ++中的函数上使用内联有一些疑问。有人告诉我在经常使用的小功能上使用它,但是我想确切地了解它是如何工作的。这只是一个示例片段。
static inline point3D createPoint3D(float x, float y, float z){
point3D newPosition;
newPosition.x = x;
newPosition.y = y;
newPosition.z = z;
return newPosition;
}
Run Code Online (Sandbox Code Playgroud)
它到底是做什么的,为什么它可以帮助代码更快地运行?这是90年代的过时优化吗?
为什么我只能在小型函数上使用它?如果我为大型功能这样做会不好吗?
在大量功能上使用它是否不好?
它更像是70年代或(至多)80年代的过时优化。除了使优化开始之外,几乎任何称职的编译器都可以选择函数进行内联扩展,而无需您的任何帮助。
它应该做的是消除调用该函数的开销。这对于像微小功能几乎什么都不做的事情非常重要。碰巧的是,这些非常普遍,以至于即使在C ++中获得中等性能也几乎需要编译器自动或多或少地扩展内联函数。
通常根本没有意义。
通常不像上面那样,当内联函数有好处时,编译器通常可以自动这样做。
需要注意的两件事:1)大多数编译器可以/将生成不带inline关键字的内联函数,以及2)如果大多数编译器inline认为该函数不适合于内联扩展,则可以/将忽略该关键字(尽管FWIW,Microsoft必须__forceinline克服)如果您确实确定您比编译器更了解,则使用后者)。
| 归档时间: |
|
| 查看次数: |
1001 次 |
| 最近记录: |