【发布时间】:2012-09-13 20:15:55
【问题描述】:
很久以前有人告诉我,通过使用关键字 inline 并在头文件中写入主体来制作经常被内联调用的简短函数/方法。 这是为了优化代码,这样就不会产生实际函数调用的开销。
今天看起来怎么样?现代编译器(在这种情况下为 Visual Studio 2010)是否会自动内联这些短函数,还是自己仍然“有必要”这样做?
【问题讨论】:
-
"使用关键字 inline 或在头文件中写入正文。" 我认为您的意思是使用关键字
inline和在标题中写入正文——如果你有多个翻译单元,只做一个而不做两个都会导致链接器错误。 -
当然。我将编辑我的问题。
-
这确实是大小问题:如果您经常调用函数(如数百万次),则函数调用开销很重要。实际上,我遇到过一种情况,该函数一开始有一个简单的
if ( something ) return;。编译器无法内联它(或选择不内联),并且将此 if 语句移出函数对性能有很大影响。然而,在更改之前,该函数被调用了大约 2000 万次。它确实是一个启用了优化的现代编译器。所以总的来说:不要浪费你的时间
标签: c++ performance inline