Version de développement
Cette documentation décrit la version « next » (develop), non encore publiée. Pour la version stable, basculez sur « v5 » dans l'en-tête.
Benchmarks et tests

Exécuter des microbenchmarks

Dodock intègre désormais un ensemble d'outils de microbenchmarks pour évaluer les performances des composants critiques du framework. Ces benchmarks permettent aux développeurs et administrateurs système de mesurer l'impact des modifications sur les opérations clés comme les requêtes de base de données, les appels Redis, ou les requêtes web.

Exécuter des microbenchmarks dans Dodock

Dodock intègre désormais un ensemble d'outils de microbenchmarks pour évaluer les performances des composants critiques du framework. Ces benchmarks permettent aux développeurs et administrateurs système de mesurer l'impact des modifications sur les opérations clés comme les requêtes de base de données, les appels Redis, ou les requêtes web.

Prérequis

  • Un environnement de développement Dodock fonctionnel.
  • Accès à la ligne de commande (bench).
  • Les tests doivent être activés (allow_tests doit être à 1 dans votre fichier common_site_config.json).

Commande CLI

Pour exécuter les microbenchmarks, utilisez la commande suivante depuis votre dossier frappe-bench :

bench run-microbenchmarks

Options disponibles

OptionDescription
--helpAffiche l'aide pour la commande.
--benchmark BENCHExécute uniquement le benchmark spécifié (ex: bench_database, bench_orm).
--listListe tous les benchmarks disponibles sans les exécuter.
--output FILEEnregistre les résultats dans un fichier JSON (ex: --output results.json).
--iterations NDéfinit le nombre d'itérations pour chaque benchmark (par défaut : 10).

Benchmarks disponibles

Les benchmarks suivants sont inclus dans Dodock :

  • bench_database : Mesure les performances des opérations de base de données (CRUD, requêtes complexes).
  • bench_orm : Évalue les performances de l'ORM (Object-Relational Mapping) de Frappe.
  • bench_redis : Teste les performances des opérations Redis (cache, files d'attente).
  • bench_background_jobs : Mesure l'efficacité des tâches en arrière-plan.
  • bench_qb : Évalue les performances du Query Builder.
  • bench_web_requests : Mesure les temps de réponse des requêtes web.
  • bench_utils : Teste les performances des utilitaires courants (ex: parsing JSON, manipulation de chaînes).

Exemple d'utilisation

Exécuter un benchmark spécifique

bench run-microbenchmarks --benchmark bench_database

Enregistrer les résultats dans un fichier

bench run-microbenchmarks --output microbench_results.json

Lister les benchmarks disponibles

bench run-microbenchmarks --list

Interpréter les résultats

Les résultats des benchmarks sont affichés sous forme de tableau dans le terminal, avec les métriques suivantes :

  • Benchmark : Nom du benchmark exécuté.
  • Iterations : Nombre d'itérations effectuées.
  • Mean (ms) : Temps moyen d'exécution en millisecondes.
  • Min (ms) : Temps minimum d'exécution.
  • Max (ms) : Temps maximum d'exécution.
  • StdDev (ms) : Écart-type des temps d'exécution.

Exemple de sortie :

Running benchmarks...

Benchmark               Iterations    Mean (ms)    Min (ms)    Max (ms)    StdDev (ms)
--------------------------------------------------------------------------------
bench_database         10            12.45       10.20       15.30       1.23
bench_orm              10            8.12        7.50        9.80        0.67

Bonnes pratiques

  1. Exécutez les benchmarks dans un environnement stable : Évitez d'exécuter d'autres processus gourmands en ressources pendant les tests.
  2. Comparez les résultats avant/après une modification : Utilisez les benchmarks pour évaluer l'impact des changements sur les performances.
  3. Utilisez les résultats pour optimiser le code : Identifiez les goulots d'étranglement et optimisez les parties critiques.
  4. Partagez les résultats avec l'équipe : Si vous travaillez sur un projet collaboratif, partagez les résultats des benchmarks pour une meilleure transparence.

Dépannage

  • Erreur allow_tests is not enabled : Activez les tests en ajoutant "allow_tests": 1 dans votre fichier common_site_config.json.
  • Benchmark introuvable : Vérifiez que le nom du benchmark est correct (utilisez --list pour voir les options disponibles).
  • Résultats incohérents : Assurez-vous que votre environnement est stable et que d'autres processus n'interfèrent pas avec les benchmarks.

Ressources supplémentaires