小编典典

C++ 中内联函数的好处?

all

在 C++ 中使用内联函数的优点/缺点是什么?我看到它只会提高编译器输出的代码的性能,但是对于今天优化的编译器、快速的 CPU、巨大的内存等(不像 1980
年那样,内存稀缺,所有东西都必须适合 100KB 的内存)什么他们今天真的有优势吗?


阅读 99

收藏
2022-05-12

共1个答案

小编典典

内联函数更快,因为您不需要像参数和返回地址那样在堆栈上/从堆栈上推送和弹出东西;但是,它确实使您的二进制文件稍大一些。

它有很大的不同吗?对于大多数人来说,在现代硬件上不够明显。但它可以有所作为,这对某些人来说已经足够了。

将某些内容标记为内联并不能保证它是内联的。这只是对编译器的建议。有时这是不可能的,例如当你有一个虚函数时,或者当涉及到递归时。有时编译器只是选择不使用它。

我可以看到这样的情况会产生可察觉的差异:

inline int aplusb_pow2(int a, int b) {
  return (a + b)*(a + b) ;
}

for(int a = 0; a < 900000; ++a)
    for(int b = 0; b < 900000; ++b)
        aplusb_pow2(a, b);
2022-05-12