Qu'est-ce que l'optimisation du programme?

L'optimisation du programme est le processus de modification d'un programme informatique d'une manière qui fait que le programme s'exécute plus rapidement, consomme moins de ressources ou fonctionne généralement avec un niveau d'efficacité plus élevé. La tâche d'optimisation peut être effectuée automatiquement par certains compilateurs de langage de programmation, intentionnellement en utilisant un programme d'optimisation, ou manuellement par des programmeurs qui passent par le code source et tentent de faire des améliorations spécifiques. En général, l'optimisation du programme est effectuée avec une fin spécifique à l'esprit, car il y a très peu d'optimisations générales qui peuvent être faites à un programme qui ne réduit en quelque sorte pas l'état optimisé d'une autre partie du programme, ce qui signifie qu'un programme peut généralement être optimisé pour la vitesse ou l'utilisation des ressources, mais généralement pas les deux. Une complication qui peut se produire avec certains types d'optimisation est que de nombreux langages de programmation de haut niveau fournissent un si grand niveau d'abstraction entre le code natif et le langage informatique que l'optimisation peut êtredifficile ou impossible à mettre en œuvre sur toutes les plateformes dans toutes les situations, en particulier avec les langues interprétées qui utilisent la compilation JIT (JIT).

.

Un concept important dans l'optimisation du programme est l'idée qu'une optimisation vient généralement avec une sorte de prix. Un exemple de cela est que, lorsqu'un morceau de code est optimisé pour s'exécuter plus rapidement, l'augmentation de la vitesse pourrait avoir le prix de la lisibilité du code, de l'utilisation de la mémoire, de la flexibilité du programme ou d'un certain nombre d'autres coûts. Cela signifie que l'optimisation du programme doit être un processus ciblé, avec l'intention de faire fonctionner un aspect d'un programme de manière meilleure tout en étant disposé à sacrifier l'efficacité d'autres aspects.

Différents types d'optimisation du programme peuvent être effectués à différentes étapes du développement de programmes. Pendant la conception, une large optimisation peut être effectuée en s'assurant qu'un programme semble s'exécuter efficacement. Quand travaillerG Avec le code source réel, les optimisations peuvent inclure la garantie qu'il n'y a pas de commandes étrangères, d'appels répétitifs ou de fonctions mal écrites. À la compilation, de nombreuses optimisations sont automatiquement effectuées par le compilateur et peuvent être guidées grâce à l'utilisation de différents commutateurs de compilateur ou directives par le programmeur.

Les optimisations automatiques, comme cela peut se produire avec un compilateur ou un programme d'optimisation de dévouement, peut souvent impliquer des astuces trop complexes pour être pratiques pour les programmeurs humains. Cela peut impliquer des instructions de déplacement dans un programme afin qu'ils soient exécutés à partir de l'ordre à l'origine, mais de manière plus efficace pour le processeur. Il peut également impliquer des ressources de déplacement intentionnellement telles que les blocs de mémoire afin qu'ils puissent être accessibles plus rapidement. La majeure partie de l'optimisation du programme se produit automatiquement au niveau du compilateur.

Une complication avec une optimisation de programme répétée ou agressive est que, une fois qu'un programme a été modifié pour s'exécuter plus efficacement, il devient généralement plus difficult to modifier à d'autres fins, tels que l'ajout de fonctionnalités ou la correction des bogues. Cela peut se produire lorsque les optimisations commencent à verrouiller les comportements du programme définis qui ne sont pas facilement modifiés ou adaptés à un nouveau code sans nécessiter que toutes les optimisations soient annulées. Un problème plus important est que, dans de nombreux cas, un programme optimisé devient moins lisible par l'homme, car les astuces et les raccourcis sont utilisés au lieu de commandes concises et de structures de contrôle classiques. Pour ces raisons, il existe souvent un niveau d'optimisation du programme à laquelle il est acceptable de s'arrêter, même si les modifications de code drastiques peuvent rendre un programme un peu plus efficace.

DANS D'AUTRES LANGUES