我参加的课程中的培训材料似乎做出了两个相互矛盾的陈述。
一方面:
“使用内联函数通常会加快执行速度”
另一方面:
“由于更频繁的交换,使用内联函数可能会降低性能”
问题1:这两种说法都是真的吗?
问题2:这里的“交换”是什么意思?
请看一下这个片段:
int powA(int a, int b) {
return (a + b)*(a + b) ;
}
inline int powB(int a, int b) {
return (a + b)*(a + b) ;
}
int main () {
Timer *t = new Timer;
for(int a = 0; a < 9000; ++a) {
for(int b = 0; b < 9000; ++b) {
int i = (a + b)*(a + b); // 322 ms <-----
// int i = powA(a, b); // not inline : 450 ms
// int i = powB(a, b); // inline : 469 ms
}
}
double d = t->ms();
cout << "--> " << d << endl;
return 0;
}
问题 3:powA
为什么和之间的性能如此相似powB
?我原本预计powB
性能会达到 322 毫秒,因为它毕竟是内联的。