对不起,这是一个如此愚蠢的问题,但我只是要问这个问题。我有一个运行数十亿计算的程序,我试图让它运行得更快。在我的程序中,我为中间计算声明了很多变量。例如,在伪代码中:
public bool FunctionThatGetsCalledInMain(manyparameters)
{
for (int i = 0; i < 10000000; i++)
{
int x = bigFunctionThatReturnsAnInt(i,manyparameters)
double y = bigFunctionThatReturnsADouble(i,manyparameters)
string z = bigFunctionThatReturnsAString(i,manyparameters)
bool b = someFunctionOfXYZ(x,y,z)
}
}
我想知道我是否可以通过以下方式提高性能:
public bool FunctionThatGetsCalledInMain(manyparameters)
{
for (int i = 0; i < 10000000; i++)
{
bool b = someFunctionOfXYZ(bigFunctionThatReturnsAnInt(i,manyparameters),bigFunctionThatReturnsADouble(i,manyparameters),bigFunctionThatReturnsAString(i,manyparameters))
}
}
我知道它看起来很可怕,我的直觉告诉我它并不重要,但我只想看看其他人是否同意。
答案 0 :(得分:4)
不要试图以这种方式“优化”性能。现代编译器将从两个版本生成相同的代码,因此在性能方面没有任何差异,但您的代码将无法读取。
一般情况下,第一种情况更具可读性,这就是首选。它清楚地命名临时变量,这有助于更好地理解代码。而且,调试起来要容易得多。