Réaliser des microbenchmarks avec JUnitBenchmarks

Cette petite librairie sympathique permet de mettre en place des benchmarks avec JUnit en 2 coups de cuillère à pot, enfin, en 2 lignes de code plus exactement.

  1. Déclarer une Rule Junit :

    1
    @Rule public MethodRule benchmarkRun = new BenchmarkRule();
  2. Annoter la classe ou les méthodes pour tuner le nombre d’itérations de chauffe et de bench :
    1
    @BenchmarkOptions(benchmarkRounds = 1000, warmupRounds = 1000)
    1. done!

      Par défaut, la lib sort seulement des statistiques dans les logs (temps moyen, temps total, nombre de gc, etc…) mais il est possible d’aller plus loin et de persister les résultats dans une base H2, voire de tracer des graphiques!

      VN:R_U [1.9.22_1171]
      Rating: 0 (from 0 votes)
      Share
Ce contenu a été publié dans Java, Outils, avec comme mot(s)-clef(s) , . Vous pouvez le mettre en favoris avec ce permalien.

2 réponses à Réaliser des microbenchmarks avec JUnitBenchmarks

  1. Un outil similaire est Contiperf.
    Ce dernier offre d’autres fonctionnalités :

    • répartir les itérations sur un pool de threads
    • effectuer des asserts sur le temps d’exécution

    En revanche, il ne permet pas d’effectuer une phase de chauffe.
    Bref, l’outil idéal serait une combinaison des 2…

    VN:R_U [1.9.22_1171]
    Rating: 0 (from 0 votes)
  2. A garder sous le coude, c’est intéressant. A priori, ça devrait plus concerner des tests d’intégration ou des tests fonctionnels que des tests unitaires, les problématiques de performances apparaissent rarement quand on prend chaque composant individuellement.

    Mais sinon, effectivement le assert me paraît primordial. Si l’on souhaite juste exécuter un tests X fois avec un tour de chauffe et mesurer les temps, c’est plutôt du one shot et ya pas vraiment besoin de framework. Par contre, pouvoir faire échouer le build lorsque les perfs se dégradent, c’est une bonne idée. Attention cependant, les builds Maven ayant tendance à se paralléliser, pas sûr que les perfs soit représentatives…

    Contiperf, le nom sonne moyen en français, on a vite fait de lire constipé :-)

    VN:R_U [1.9.22_1171]
    Rating: 0 (from 0 votes)

Laisser un commentaire