多次调用函数会降低程序速度吗?

时间:2017-11-20 21:49:43

标签: c++ function

我只是一个简单的问题。

1

sf::Vector2f position = player.getPosition();
std::cout << position.x << " " << position.y << '\n';

2

std::cout << player.getPosition().x << " " << player.getPosition().y << '\n';

理论上第一种方式比第二种方式更快吗?因为第二种方式调用相同的函数2次。

2 个答案:

答案 0 :(得分:3)

通常多次调用函数使程序变慢。

对于每个函数调用,需要保存上下文(程序计数器,局部变量等),并且需要创建一个新的堆栈帧,其中保存在该函数内创建的局部变量。

因此,每次调用函数时,所有这些都会发生。而且,这并没有考虑到函数需要处理多长时间才能处理它。

答案 1 :(得分:2)

也许。这取决于。

多次调用函数可能比调用函数一次慢。

但是,如果优化器可以证明该函数没有副作用,那么它将能够将多个函数调用减少为1。如果优化器为两个备选方案生成相同的输出,则程序速度不会降低。