* Typo3 Strasbourg
***Web2007 est un bureau indépendant situé à Genève et a l'habitude de travailler pour des entreprises PARTOUT en France et en Europe
Typo3 Strasbourg
Article:
En programmation informatique, l'optimisation renvoie à la pratique qui permet de réduire le temps d'exécution d'une fonction, l'espace usité par les données et le programme, ou la consommation d'énergie. L'optimisation ne doit intervenir qu'une fois que le programme marche et répond aux spécifications fonctionnelles. l'expérience montre qu'apposer des optimisations de bas niveau du code avant que ces deux conditions ne soient réalisées revient le plus souvent à une perte de temps et s'avère néfaste à la clarté du code et au bon fonctionnement du programme Il est clair que cette règle ne doit s'appliquer qu'aux optimisations locales, de bas niveau (réécriture en assembleur, déroulage de boucle, etc.) et pas aux optimisations de haut niveau concernant le choix des algorithmes ou l'architecture d'un projet. Ces optimisations de haut niveau seront difficiles et coûteuses (en termes de temps, difficulté et budget), voire impossible, à effectuer, plus le projet grandit et plus. La plupart des compilateurs originaux pratiquent de façon automatique un certain nombre d'optimisations qu'il serait fastix d'effectuer manuellement et qui rendraient le code source moins lisible. l'optimisation manuelle locale ne manque pas d'intérêt dans des cas très spécifiques, mais les mesures montrent que sur des machines RISC qui détiennent un nombre élevé de registres et où l'efficacité demande le regroupement des instructions identiques pour jouir de l'effet pipeline, l'optimiseur d'un compilateur C fournit souvent un code plus efficace que celui qui serait écrit en assembleur par un programmeur expérimenté (ce qui n'était jamais le cas sur les machines CISC). Et de surcroit ce code est bien plus facile à maintenir, car les instructions en C restent dans un ordre lié à la seule intelligibilité du code et non aux spécificités de la machine : dans les optimiseurs actuels, en effet, les ordres machines associés à une instruction ne se trouvent plus nécessairement en position contiguë, pour des raisons d'efficacité d'exécution. Il faut savoir mesurer la vitesse du code avant de commencer l'optimisation en choisissant un paramètre, de préférence simple et mesurable. Ceci peut être par exemple le temps de traitement sur un jeu de donnée précis, ou le nombre d'images affichées par seconde, ou encore le nombre de requêtes traitées par minute. Il faut mesurer le temps passé dans chacune des parties du programme une fois le paramètre de mesure déterminé. Il est possible que 80 % à 90 % du temps soit consacré à l'exécution de 10 % du code (les boucles critiques). Les chiffres changent en fonction de la taille et de la complexité des projets.