Micro-optimisation

Définition, exemples et bonnes pratiques

À 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 << 1 au lieu de x * 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

optimisation de bas niveau optimisation locale peaufinage de code

Antonymes

optimisation algorithmique optimisation macroscopique optimisation prématurée

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.