Cette question est purement par curiosité et je suis sûr que la réponse dépend du compilateur. Ceci est également une micro-optimisation extrême qui conduira presque certainement à un code non-supportable. Le CPU doit évidemment effectuer chaque calcul et le stocker quelque part, donc peut-être que c'est fonctionnellement le même. Avec tout cela de côté, je me demandais si l'utilisation de moins de variables conduirait intrinsèquement à un code d'exécution plus rapide. Par exemple, il serait bon de laisser les résultats dans les registres pour de longs calculs. Bien sûr, si vous avez besoin du même résultat plus d'une fois, ce n'est pas utile.Les instructions simples sont-elles plus rapides?
Par exemple ce code:
var result = GetNumber();
var adjusted1 = result + 10;
var adjusted2 = adjusted1/2;
var final = GetFinal(adjusted2);
peut être transformé en ce qui suit:
var final = GetFinal((GetNumber() + 10)/2);
En général serait la sortie du compilateur de quelque chose comme ça, une seule ligne sans variables, toujours identiques à travers les langues? Si la déclaration ci-dessus impliquait des centaines de calculs serait-ce la même chose?
Vous pouvez [vérifier le code d'assemblage] (http://stackoverflow.com/a/137074/2721883) émis pour les deux. – clcto
C'est vrai. Je me demande plus dans le cas général cependant. – Telavian
Il n'y a pas de réponse. Par exemple, dans les langages avec des fonctions pures et eval paresseux, l'argument one-liner de 'GetFinal' ne peut même pas être évalué s'il n'est pas utilisé, alors que la version à quatre lignes le ferait. Ceci avant même d'envisager la compilation (ou les langues où + ne signifie pas arithmétique plus). Avec la compilation alors, chaque compilateur est libre d'avoir son implémentation tant qu'il est conforme et de telles optimisations ne sont pas appliquées. En général, faire de la macro-optimisation et laisser la micro-optimisation au compilateur, se concentrer sur la lisibilité en cas de doute. –