- 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.hrtime ou performance.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
task ou par bench, contrôle du nombre maximal d'exécutions simultanées via l'option threshold
- Architecture basée sur les événements et extensible : les classes
Bench et Task héritent d'EventTarget, avec possibilité d'ajouter des écouteurs d'événements comme cycle et abort
- Détection automatique des fonctions asynchrones : vérifie si la fonction renvoie
AsyncFunction ou Promise pour activer automatiquement le mode async
- Visualisation et conversion des résultats : la méthode
bench.table() transforme les données au format console.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
- 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
abort et 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
Aucun commentaire pour le moment.