假设我有一个 10 行函数。如果我添加 inline 关键字,假设编译器有 50% 的机会将其内联。
如果我有一个 2 行函数,它可能有 90% 的机会被内联。
我能否将 10 行函数中的代码拆分为 5 个函数,使其内联的几率更高?
最佳答案
编译器没有内联它可能是有原因的,可能需要查看。此外,对于较长的函数,函数调用开销不再是一个问题,因此内联它们可能不那么重要(如果这是您的唯一原因)。
将函数拆分为 5 个小函数只会让您的代码变得一团糟,并且可能会混淆编译器并最终导致它不内联任何内容。我不建议这样做。
根据您的 C++ 编译器,您可以强制它内联函数。 Visual C++ 具有 __forceinline
属性,以及关于应如何处理内联以及应在项目设置中使用内联的频率的设置。正如 Tony 提到的,GCC 等效项是 __attribute__((always_inline))
。
您也可以使用一些预处理器技巧来内联代码本身,但我通常不建议这样做。
关于c++ - 制作一个长函数内联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5560787/