c++ - 制作一个长函数内联

标签 c++ optimization stl

假设我有一个 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/

相关文章:

c++ - 如何在系统 ("say string variable"中使用字符串变量)?

c++ - 如何混合语音音频

c# - 在内存中固定指针数组

c++ - 为什么在 Herb Sutter 的 CppCon 2014 演讲中不推荐使用值(value) setter 成员函数(回到基础 : Modern C++ Style)?

C++ - STL - vector - 为什么没有设施来指示 vector 中的 relocation_count

c++ - 共享库 libbar.so 静态链接到 libfoo.a,程序链接到 libbar.so 和 libfoo.so,会发生什么?

c++ - 在 MAC OSX 的同一个 R session 中调用两个 .Call (Rcpp) 函数

android - 我的应用程序支持多屏幕吗?

java - DFS 的 OutOfMemoryError

c++ - 在排序的 STL 容器中查找给定键的 "best matching key"