Объявление переменных для промежуточных расчетов и производительности

Извините, это такой тупой вопрос, но я просто должен это задать. У меня есть программа, которая выполняет миллиарды вычислений, и я пытаюсь заставить ее работать быстрее. В моей программе я объявляю много переменных для промежуточных вычислений. Например, в псевдокоде:

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))
    }
}

Я знаю, что это выглядит ужасно, и моя интуиция подсказывает мне, что это на самом деле не имеет значения, но я просто хотел посмотреть, согласны ли другие.

1 ответ

Решение

Не пытайтесь "оптимизировать" производительность таким способом. Современные компиляторы будут генерировать идентичный код из обеих версий, поэтому с точки зрения производительности не будет никакой разницы, но ваш код будет нечитаемым.

В общем, первый случай гораздо более читабелен, и поэтому предпочтителен. Он четко называет временную переменную, что помогает лучше понять код. Более того, это намного проще для отладки.

Другие вопросы по тегам