ALI

mardi 26 novembre 2013

Qu'est-ce que l'optimisation de programmes?

l'optimisation du programme est le processus de modification d'un programme d'ordinateur d'une manière qui provoque le programme à exécuter plus rapidement, consomment moins de ressources ou généralement fonctionner avec un niveau plus élevé d'efficacité. La tâche de l'optimisation peut être effectuée automatiquement par certains compilateurs de langages de programmation, intentionnellement en utilisant un programme d'optimisation, ou manuellement par les programmeurs qui marchent à travers le code source et tentative d'apporter des améliorations spécifiques. En général, l'optimisation du programme est réalisée avec un but bien précis, parce qu'il ya très peu optimisations générales qui peuvent être apportées à un programme qui ne le font pas d'une certaine façon à réduire l'état optimisé d'une autre partie du programme, ce qui signifie un programme ne peut généralement être optimisé pour la vitesse ou de l'utilisation des ressources, mais habituellement pas les deux. Une complication qui peut survenir avec certains types d'optimisation est que beaucoup de programmation de haut niveau langues offrent un tel grand niveau d'abstraction entre le code natif et le langage informatique que l'optimisation peut être difficile ou impossible à mettre en œuvre dans l'ensemble des plates-formes dans toutes les situations, en particulier avec interprété les langues qui utilisent juste-à-temps (JIT). 

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.