L'optimisation prématurée

En programmation informatique, l'optimisation est la pratique qui consiste généralement à réduire le temps d'exécution d'une fonction, l'espace occupé par les données et le programme, ou la consommation d'énergie. La règle numéro un de l'optimisation est qu'elle ne doit intervenir qu'une fois que le programme fonctionne et répond aux spécifications fonctionnelles. L'expérience montre qu'appliquer 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 : « On devrait oublier les petites optimisations locales, disons, 97 % du temps : l'optimisation prématurée est la source de tous les maux. »
— Donald Knuth

La citation indique très clairement 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. Au contraire plus le projet grandit et plus ces optimisations de haut niveau seront difficiles et coûteuses (en termes de temps, difficulté et budget), voire impossible, à effectuer.