Benchmarks et intégration continue

Dans le cadre professionnel, je travaille sur un logiciel d’optimisation traitant un modèle complexe, riche, sur un nombre de données conséquent. La durée de traitement des algorithmes principaux est donc très critique car certains détails peuvent plomber complètement des performances.

Sur un logiciel de ce type, le temps de traitement est un des indicateurs de sa qualité. Au même titre que des résultats de tests unitaires ou d’indicateurs de qualité de code, il nous est apparu indispensable de suivre l’évolution du temps de calcul de nos algorithmes au jour le jour. D’où l’idée d’ajouter des benchmarks au processus d’intégration continue (et l’article en anglais sur wikipedia).

Nous avons évidemment dû créer des outils spécifiques pour cela, car cette pratique n’est pas très répandue, étant assez spécifique à notre métier. On s’est appuyé sur des projets de tests unitaires au sein lesquels on enregistre la durée de nos benchmarks. Puis gnuplot fait le reste, en transformant ces fichiers en graphiques lisibles et interprétables.

Performance benchmarks

Résultats de tests de performance dans le cadre de l’intégration continue.

Comme on peut le voir sur ce graphe, ce dispositif s’avère très utile pour surveiller les régressions et les corriger rapidement. Ce n’est pas la première fois que ça arrive, et souvent ce genre d’événement nous rappelle combien ces benchmarks nous sont utiles !

J’espère que des solutions vont apparaître pour pouvoir procéder à ce genre de tests durant l’intégration continue, en standard. Pour ma part, je n’en connais pas.

Laisser un commentaire