pas*_*ena 4 c++ optimization stl
假设我有一个 10 行函数。如果我添加 inline 关键字,假设编译器有 50% 的机会将其内联。
如果我有一个 2 行函数,那么它有 90% 的可能性会被内联。
我可以将 10 行函数中的代码拆分为 5 个函数,以便更好地内联吗?
编译器没有内联它可能是有原因的,可能需要注意一下。此外,对于较长的函数,函数调用开销不再是问题,因此内联它们可能不那么重要(如果这是您唯一的原因)。
将函数拆分为 5 个小函数只会使代码变得混乱,并且可能会使编译器感到困惑,最终导致它不内联任何内容。我不建议这样做。
根据您的 C++ 编译器,您也许能够强制它内联该函数。Visual C++ 具有该__forceinline属性,以及如何处理内联以及在项目设置中使用内联的频率的设置。正如托尼提到的,GCC 等效项是__attribute__((always_inline)).
您还可以使用一些预处理器技巧来内联代码本身,但我通常不会推荐这样做。