Объявление переменных для промежуточных расчетов и производительности
Извините, это такой тупой вопрос, но я просто должен это задать. У меня есть программа, которая выполняет миллиарды вычислений, и я пытаюсь заставить ее работать быстрее. В моей программе я объявляю много переменных для промежуточных вычислений. Например, в псевдокоде:
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 ответ
Не пытайтесь "оптимизировать" производительность таким способом. Современные компиляторы будут генерировать идентичный код из обеих версий, поэтому с точки зрения производительности не будет никакой разницы, но ваш код будет нечитаемым.
В общем, первый случай гораздо более читабелен, и поэтому предпочтителен. Он четко называет временную переменную, что помогает лучше понять код. Более того, это намного проще для отладки.