声明中间计算和性能的变量

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)

我知道这看起来很可怕,我的直觉告诉我这并不重要,但我只是想看看其他人是否同意。

nog*_*ard 5

不要尝试以这种方式“优化”性能。现代编译器将从两个版本生成相同的代码,因此性能方面不会有任何差异,但您的代码将不可读。

一般来说,第一种情况更具可读性,这就是首选的原因。它清楚地命名临时变量,有助于更好地理解代码。此外,它更容易调试。

  • 并且不要忘记,当您验证这一点时,要在发布模式下编译程序并在不附加调试器的情况下运行。调试器附件和调试模式将阻止任何优化。 (2认同)