假设我有10行功能。如果我添加inline关键字,假设编译器有可能将其内联为50%。
如果我有2行功能,则可能有90%的可能性被内联。
我可以将10行函数中的代码拆分为5个函数,使其内联更好吗?
答案 0 :(得分:4)
可能有一个原因,编译器没有内联它,可能需要注意的事情。此外,函数调用开销不再是功能较长的问题,因此内联它们可能不那么重要(如果这是你唯一的原因)。
将函数拆分为5个小函数只会使代码混乱,并且可能会混淆编译器并最终不会内联任何内容。我不建议这样做。
根据您的C ++编译器,您可以强制它内联函数。 Visual C ++具有__forceinline
属性,以及如何处理内联的设置以及在项目设置中应该使用的频率。正如托尼所提到的那样,GCC的等价物是__attribute__((always_inline))
。
您也可以使用一些预处理器技巧来内联代码本身,但我通常不建议这样做。
答案 1 :(得分:3)
如果它使代码更具可读性,那就去吧。如果没有,请相信编译器,并且不要因为它有帮助而破坏你的代码。编译器比你想象的要聪明得多,并且通常比在内联时更有帮助 - 当它不会或者更糟的时候会破坏它们。