use*_*285 0 c# performance-testing variable-declaration
抱歉,这是个愚蠢的问题,但我不得不问这个。我有一个运行数十亿次计算的程序,我正在努力让它运行得更快。在我的程序中,我声明了很多用于中间计算的变量。例如,在伪代码中:
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)
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以通过执行以下操作来提高性能:
public bool FunctionThatGetsCalledInMain(manyparameters)
{
for (int i = 0; i < 10000000; i++)
{
bool b = someFunctionOfXYZ(bigFunctionThatReturnsAnInt(i,manyparameters),bigFunctionThatReturnsADouble(i,manyparameters),bigFunctionThatReturnsAString(i,manyparameters))
}
}
Run Code Online (Sandbox Code Playgroud)
我知道这看起来很可怕,我的直觉告诉我这并不重要,但我只是想看看其他人是否同意。
不要尝试以这种方式“优化”性能。现代编译器将从两个版本生成相同的代码,因此性能方面不会有任何差异,但您的代码将不可读。
一般来说,第一种情况更具可读性,这就是首选的原因。它清楚地命名临时变量,有助于更好地理解代码。此外,它更容易调试。