假设我这里有一个名为“游戏”的类(class)。其他方法、构造函数和析构函数在我的示例中完全被忽略了,它们与我手头的问题无关紧要。
// Game.hpp
#pragma once
class Game {
public:
...
bool isRunning() { return mRunning; } // See: mRunning
...
private:
bool mRunning; // Holds if the game is running or not
};
好吧,够简单吧?现在我关心的是:
// main.cpp
#include "Game.hpp"
int main(int argc, char* argv[]) {
Game game;
if (game.isRunning()) {
...
}
return EXIT_SUCCESS;
}
那和有什么区别?
// main.cpp
#include "Game.hpp"
int main(int argc, char* argv[]) {
Game game;
bool running = game.isRunning();
if (running) {
...
}
return EXIT_SUCCESS;
}
所以这是我的问题:手头有任何性能损失/增益吗?这也适用于我意识到的括号范围。但是就性能而言,这是否得到了优化?这取决于编译器吗?
最佳答案
由编译器来优化它。该函数可能会被内联,并且临时变量可能不会存储在寄存器以外的任何地方。
您实际上在这里做的是“过早优化”,这是一种阴险的拖延形式,会阻止您实际编写游戏。先写你的游戏,然后再找出瓶颈。这不会是其中之一。
关于c++ - 变量声明对程序效率的重要性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17036073/