Mesurez les performances de votre code ou de vos outils grâce à Hyperfine
On vit dans un monde où on nous incite sans cesse à être plus performants. Il faut en faire plus, plus vite et mieux. Tout le temps. C’est épuisant. Et surtout très con.
D’ailleurs, on n’en demande pas tant à nos outils. On les développe ou on les utilise sans vraiment se poser de question sur leurs performances réelles. Et c’est dommage car en tant que développeur, vous aimeriez peut être mesurer le temps d’exécution d’un script shell pour savoir s’il est plus rapide qu’une version précédente. Ou pouvoir comparer la rapidité d’exécution de différents programmes afin de sélectionner le meilleur !
Pas de souci, j’ai ce qu’il vous faut. Cela s’appelle Hyperfine et c’est un outil de benchmarking qui s’utilise en ligne de commande et qui permet de comparer les temps d’exécution de différents programmes.
C’est très utile pour mesurer par exemple les performances des programmes qui effectuent beaucoup d’écritures et de lectures sur un disque afin de voir comment ils se comportent avec ou sans cache, ou sur un disque dur ou un SSD.
Hyperfine dispose de nombreuses fonctionnalités pour vous aider à obtenir des résultats précis et fiables, notamment une analyse statistique sur plusieurs exécutions, la prise en charge de commandes shell arbitraires et un retour constant sur l’avancement du benchmark et les estimations en cours.
Pour l’utiliser, vous pouvez par exemple faire un benchmark de n’importe quelle commande comme ceci :
hyperfine COMMANDE_A_EVALUER
Pour tester la commande sleep
par exemple, on fera comme ceci :
hyperfine 'sleep 0.3'
Ainsi, par défaut, Hyperfine effectuera au moins 10 exécutions du programme et prendra sa mesure à chaque fois pendant 3 secondes pendant au moins 3 secondes. Notez que vous pouvez changer cette durée de test en utilisant l’option -r
ou --runs
et en spécifiant la durée derrière.
Si vous souhaitez comparer les temps d’exécution de différents programmes, vous pouvez également passer plusieurs commandes à Hyperfine. Ainsi pour pour comparer les temps d’exécution de hexdump
et xxd
, vous pouvez appeler hyperfine comme ceci :
`hyperfine 'hexdump VOTRE_FICHIER' 'xxd VOTRE_FICHIER'`
Par exemple si vous avez un doute sur les performances d’une nouvelle version d’un outils, Hyperfine peut vous aider à la comparer avec une version précédente.
Hyperfine vous permet également de réaliser des benchmarks où un seul paramètre change à chaque exécutions. Ca permet de mesurer le comportement d’un programme en fonction des paramètres que vous lui faites digérer.
Au niveau des exports, c’es top puisque vous pouvez récupérer ensuite les résultats au format CSV, JSON, Markdown…etc afin d’analyser ensuite tout ça au calme.
Bref, c’est un petit outil en ligne de commande qui ne paye pas de mine mais qui vous sera d’une grande aide pour faire vos benchmarks et comparer le temps d’exécution de vos propres codes ou d’outils tiers.
Amusez-vous bien !