我只是一个简单的问题。
1
sf::Vector2f position = player.getPosition();
std::cout << position.x << " " << position.y << '\n';
2
std::cout << player.getPosition().x << " " << player.getPosition().y << '\n';
理论上第一种方式比第二种方式更快吗?因为第二种方式调用相同的函数2次。
答案 0 :(得分:3)
通常多次调用函数会使程序变慢。
对于每个函数调用,需要保存上下文(程序计数器,局部变量等),并且需要创建一个新的堆栈帧,其中保存在该函数内创建的局部变量。
因此,每次调用函数时,所有这些都会发生。而且,这并没有考虑到函数需要处理多长时间才能处理它。
答案 1 :(得分:2)
也许。这取决于。
多次调用函数可能比调用函数一次慢。
但是,如果优化器可以证明该函数没有副作用,那么它将能够将多个函数调用减少为1。如果优化器为两个备选方案生成相同的输出,则程序速度不会降低。