À retenir
- Les gains de performance sont souvent négligeables par rapport à une amélioration de l'algorithme global.
- Les compilateurs modernes effectuent déjà la plupart de ces optimisations automatiquement et mieux qu'un humain.
- Une micro-optimisation excessive rend souvent le code illisible et difficile à maintenir.
La micro-optimisation consiste à modifier de très petits détails techniques dans le code source pour essayer de gagner un peu de vitesse ou de mémoire au niveau d'une seule instruction. On peut comparer cela à un pilote de course qui chercherait à réduire le poids de ses lacets de chaussures alors que son moteur est mal réglé.
Étymologie
Issu du préfixe grec mikros (petit) et du mot latin optimus (le meilleur). En informatique, le terme s'est répandu pour désigner les interventions manuelles sur le code qui visent des gains de performance marginaux, souvent à l'échelle du cycle processeur.
Exemples d'usage
- Remplacer une multiplication par deux par un décalage de bits (
x << 1au lieu dex * 2). - Réorganiser l'ordre des variables dans une structure pour optimiser l'occupation dans la mémoire cache.
- Utiliser l'incrémentation préfixée (
++i) plutôt que postfixée (i++) dans certains langages pour éviter une copie temporaire inutile.
Cas d'usage
Ce concept est pertinent dans le développement de systèmes aux ressources critiques : moteurs de jeux vidéo, logiciels de trading haute fréquence, systèmes embarqués ou bibliothèques de calcul mathématique intensif.
Bonnes pratiques
Il faut impérativement suivre l'adage de Donald Knuth : « L'optimisation prématurée est la racine de tous les maux ». Ne pratiquez la micro-optimisation qu'après avoir identifié un ralentissement réel via un outil de mesure (un profiler) et privilégiez toujours la clarté du code en premier lieu.
Synonymes
Antonymes
Conseil
Si vous débutez, ne vous souciez pas de savoir si une fonction est un millième de seconde plus rapide qu'une autre. Apprenez d'abord à écrire un code propre et fonctionnel. Les outils modernes s'occuperont de la performance invisible pour vous.
Questions fréquentes
Est-ce utile pour un développeur web ?
Presque jamais. Les délais réseau et les requêtes aux bases de données sont des goulots d'étranglement bien plus importants que la vitesse d'exécution d'une boucle locale.
Pourquoi les compilateurs font-ils ce travail ?
Ils sont conçus pour transformer le code lisible en instructions machines ultra-efficaces, connaissant parfaitement les spécificités de chaque processeur.