【发布时间】:2011-01-21 16:57:46
【问题描述】:
编译器如何处理内联函数而不是宏以减少执行时间?
【问题讨论】:
-
这是一个你不应该关心的过早优化。由于很多原因,函数更安全。此外,只有当编译器认为这是一个好主意时,函数才会被内联(因为通常人类选择内联现在是错误的选择(或者可能在函数被维护后稍后))。编译器的工作就是让东西变得快速(当你尝试过早地优化东西时,你只会妨碍编译器完成它的工作)。
-
您能解释一下什么是过早优化吗?
-
"过早优化" 您正在尝试通过应用专门的技术来优化代码。而不是尽可能清晰简洁地编写代码。在您完成程序并对不同部分进行计时以找到瓶颈之前,通常没有必要考虑这些优化。编译器已经进行了这种优化的事实是对这种优化的又一次打击,因为人类永远无法击败编译器(从长远来看)。
-
@Martin York 我希望所有 SO 都会阅读您的评论。 “过早的优化”引用在这里被经常抛出。对明显的可扩展性和可维护性问题进行良好的规划与担心不可预测的事情之间是有区别的。我敢肯定,在这种情况下,您对这个短语的使用恰到好处,很好地表达了 Knuth 的意思。