Parfois, je déclare des variables "à usage unique" dans mon code pour plus de clarté. Est-ce que cela affecte considérablement les performances ou est-ce que le compilateur peut l'optimiser?Les déclarations de variables devraient-elles toujours être évitées en C++?
Par exemple, je aurais tendance à faire:
int minVal = long_arithmetic_expresion();
int maxVal = even_longer_expression();
for (int i = minVal; i < maxVal; i++)
{
// Do stuff not related to minVal or maxVal
}
double part1 = 4*sqrt(something)* ... // Very long thing
double part2 = 5*sqrt(something else)* ... // Very long thing
double interestingValue = part1/part2; // This is the only interesting variable for later
Plutôt que:
for (int i = long_arithmetic_expresion(); i < even_longer_expression(); i++)
{
// Do stuff not related to minVal or maxVal
}
double interestingValue = (4*sqrt(whatever)* ...)/(5*sqrt(something else)* ...);
Cette boucle serait contenue dans une fonction qui sera appelée à plusieurs reprises, de sorte que même les performances des petites le gain serait pertinent dans mon cas.
Note:
Comme il a été rapidement fait remarquer, il y a une chance que even_longer_expression() pourrait être évaluée à chaque étape de la boucle, ce qui est évidemment pas bon. Pour plus de clarté, ma question concerne le fait de déclarer des variables à usage unique. J'ai ajouté un peu plus de code après la boucle. Je me réfère à des cas comme les variables part1 et part2.
Dans votre exemple 'int maxVal = even_longer_expression();' ne devrait être déclaré que – Evgeny
'even_longer_expression()' va être évalué à chaque passage, donc bien sûr, il est logique de ne pas l'avoir. –
'minVal' et' maxVal' devraient être 'const' ou même' constexpr' si c'est possible. Cela vous empêche non seulement de changer accidentellement leurs valeurs, mais vous aide aussi le compilateur à faire plus d'optimisations. –