1.2.1 : Maturité de l'application
On ne procédera pas de la même façon pour étudier et optimiser les performances d'une application qui est en train d'être développée que pour étudier les performances d'un code qui est déjà actif en production et qu'on souhaite refondre ou optimiser:
- Dans la cas d'une application en cours de développement, on essaiera d'estimer par un raisonnment basé sur des ordres de grandeur quels points de l'application risquent d'être limitants pour les performances. On prendra ensuite garde dans ces régions-là du code à choisir la meilleure approche algorithmique en faisant nos comparatifs avec des micro-benchmarks centrés sur l'activité précise qu'on étudie. Il y aura évidemment un risque de se tromper dans nos prédictions, et donc de passer accidentellement du temps sur des choses sans importance, mais en contrepartie on sera en mesure d'affecter facilement la structure de l'application de façon profonde là où cela doit être fait.
- Dans le cas d'une application déjà existante, à l'inverse on aura la chance de pouvoir étudier les caractéristiques de performances en conditions réelles, sans avoir besoin de les estimer. Mais en contrepartie, on devra composer avec une structure du code pas toujours idéale, qu'il sera difficile de remanier en profondeur, et se heurter à des problématiques de compatibilité lorsqu'une interface de l'application (API des bibliothèques, formats des données sur disque...) s'avère problématique du point de vue des performances.