Un concept important dans l'optimisation du programme est l'idée que l'optimisation vient habituellement avec une sorte de prix. Un exemple de ceci est que, quand un morceau de code est optimisé pour fonctionner plus rapidement, l'augmentation de la vitesse pourrait se faire au prix de la lisibilité du code, utilisation de la mémoire, la flexibilité du programme ou d'un certain nombre d'autres coûts. Cela signifie l'optimisation de programme doit être un processus ciblé, avec l'intention de faire un aspect d'un programme fonctionne dans une meilleure façon, tout en étant prêt à sacrifier l'efficacité d'autres aspects.
Différents types d'optimisation de programme peuvent être effectués à différents stades de développement du programme. Lors de la conception, l'optimisation large peut être fait en assurant un programme semble fonctionner efficacement.
Lorsque vous travaillez avec le code source réelle, optimisations
peuvent inclure assurant qu'il n'ya pas de commandes étrangers, les
appels répétitifs ou fonctionne mal écrites. A la compilation, de nombreuses optimisations sont effectuées automatiquement par le compilateur et peuvent être guidés à travers l'utilisation de différents commutateurs ou des directives de compilation par le programmeur .
Optimisations automatiques, comme cela peut arriver avec un programme
de compilateur ou l'optimisation de dévouement, peuvent souvent
entraîner des astuces qui sont trop complexes pour être pratique pour
les programmeurs humains.
Cela peut impliquer le déplacement des instructions dans un programme
de sorte qu'elles sont exécutées sur l'ordre écrit à l'origine, mais
d'une manière plus efficace pour le processeur.
Il peut également impliquer intentionnellement transfert de ressources
tels que des blocs de mémoire afin qu'ils puissent être accessibles plus
rapidement. La plupart des programmes d'optimisation se produit automatiquement au niveau du compilateur.
Une complication avec l'optimisation de programme répétée ou agressif
est que, une fois qu'un programme a été modifié pour fonctionner plus
efficacement, il devient généralement plus difficiles à modifier à
d'autres fins, telles que l'ajout de fonctionnalités ou corriger des
bugs.
Cela peut se produire lorsque les optimisations commencent à bloquer
des comportements des programmes établis qui ne sont pas facilement
modifiées ou adaptées à un nouveau code sans exiger que toutes les
optimisations être annulées.
Un problème plus important est que, dans de nombreux cas, un programme
optimisé devient moins lisible, parce astuces et raccourcis sont
utilisés au lieu des seules commandes concis et structures de contrôle
classiques.
Pour ces raisons, il ya souvent un niveau d'optimisation de programme à
laquelle il est acceptable d'arrêter, même si des modifications de code
drastiques pourraient faire un programme de travail un peu plus
efficace.