Tinybench - Bibliothèque de benchmarking JavaScript légère
(github.com/tinylibs)- Un outil de benchmarking ultra léger de moins de 10 KB conçu pour mesurer précisément les performances du code
- Fonctionne sur la base de la Web API et prend en charge une mesure de temps précise via
process.hrtimeouperformance.now - Exécutable dans divers environnements d'exécution JavaScript comme Node.js, Deno et Bun
- Fournit des fonctions d'analyse statistique : moyenne, écart-type, marge d'erreur, variance, percentiles et prise en charge du calcul de latence et de throughput (débit)
- Mode de concurrence (concurrency) : exécution parallèle par
taskou parbench, contrôle du nombre maximal d'exécutions simultanées via l'optionthreshold - Architecture basée sur les événements et extensible : les classes
BenchetTaskhéritent d'EventTarget, avec possibilité d'ajouter des écouteurs d'événements commecycleetabort - Détection automatique des fonctions asynchrones : vérifie si la fonction renvoie
AsyncFunctionouPromisepour activer automatiquement le mode async - Visualisation et conversion des résultats : la méthode
bench.table()transforme les données au formatconsole.table(), et la personnalisation du format d'affichage est possible via une fonction Converter personnalisée - Avec l'option
retainSamples, les données brutes des échantillons sont conservées, et peuvent être réutilisées pour des analyses personnalisées, des visualisations graphiques et l'export des résultats - Sélection possible d'un fournisseur de timestamps (timestamp provider) précis
- La valeur par défaut est
performance.now() - Options d'optimisation par runtime disponibles :
hrtimeNow,bunNanoseconds,auto - Possibilité d'implémenter une interface personnalisée TimestampProvider
- La valeur par défaut est
- Gestion d'interruption basée sur
AbortSignal- Interruption (abort) possible de l'ensemble du benchmark ou au niveau d'une tâche individuelle
- En cas d'interruption, émission de l'événement
abortet définition du drapeau d'état (task.result.aborted)
- Structure en package unique sans dépendance externe, garantissant un démarrage et une exécution rapides
- Sa signature est de proposer une conception plus petite, plus simple et plus adaptée aux Web API, par rapport à Benchmark.js, mitata, tatami-ng et Bema
1 commentaires
Je me demande même si on a encore besoin de ce genre d’outil. L’IA écrit désormais tellement bien des scripts pour mesurer les performances en fonction du contexte et du moment...