DĂ©marrage Rapide
Quâest-ce que Bencher?
Bencher est une suite dâoutils de benchmarking continu. Avez-vous dĂ©jĂ eu une rĂ©gression de performance qui a impactĂ© vos utilisateurs ? Bencher aurait pu empĂȘcher cela de se produire. Bencher vous permet de dĂ©tecter et de prĂ©venir les rĂ©gressions de performance avant quâelles nâarrivent en production.
- Exécuter: Exécutez vos benchmarks localement ou en CI en utilisant vos outils de benchmarking préférés. La CLI
bencher
enveloppe simplement votre harnais de benchmarking existant et stocke ses rĂ©sultats. - Suivre: Suivez les rĂ©sultats de vos benchmarks au fil du temps. Surveillez, interrogez et graphiquez les rĂ©sultats Ă lâaide de la console web Bencher en fonction de la branche source, du banc dâessai et de la mesure.
- DĂ©tecter: DĂ©tectez les rĂ©gressions de performances en CI. Bencher utilise des analyses de pointe et personnalisables pour dĂ©tecter les rĂ©gressions de performances avant quâelles nâarrivent en production.
Pour les mĂȘmes raisons que les tests unitaires sont exĂ©cutĂ©s en CI pour prĂ©venir les rĂ©gressions de fonctionnalitĂ©s, les benchmarks devraient ĂȘtre exĂ©cutĂ©s en CI avec Bencher pour prĂ©venir les rĂ©gressions de performance. Les bugs de performance sont des bugs !
Installer le CLI bencher
Linux, Mac, & Unix
Pour Linux, Mac, et autres systÚmes de type Unix, exécutez ce qui suit dans votre terminal :
curl --proto '=https' --tlsv1.2 -sSfL https://bencher.dev/download/install-cli.sh | sh
Windows
Pour les systÚmes Windows, exécutez ce qui suit dans un terminal PowerShell :
irm https://bencher.dev/download/install-cli.ps1 | iex
đ° Si vous recevez une erreur qui dit
running scripts is disabled on this system
:
- Ouvrez
Powershell
en utilisantExécuter en tant qu'administrateur
- Exécutez:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
- Tapez:
Y
- Réexécutez ce script
Pour des options dâinstallation supplĂ©mentaires, consultez comment installer le CLI bencher
.
Maintenant, testons si nous avons installé le CLI bencher
.
Exécutez : bencher --version
Vous devriez voir :
$ bencher --versionbencher 0.4.37
Créez un Compte Bencher Cloud
Bencher est open source et auto-hĂ©bergĂ©. Si vous ĂȘtes intĂ©ressĂ© par lâauto-hĂ©bergement, consultez le tutoriel Docker Bencher. Pour ce tutoriel cependant, nous allons utiliser Bencher Cloud.
Inscrivez-vous Ă Bencher Cloud
Une fois que vous avez crĂ©Ă© un compte, vous devrez confirmer votre adresse Ă©lectronique. VĂ©rifiez dans vos emails pour un lien de confirmation. AprĂšs cela, vous devriez ĂȘtre connectĂ© Ă Bencher Cloud.
Créer un jeton API
Pour utiliser lâAPI Bencher, vous devrez crĂ©er un jeton API.
Allez Ă la console Bencher.
Passez votre souris sur votre nom dans le coin supérieur droit.
Un menu déroulant devrait apparaßtre. Sélectionnez Tokens
.
Une fois sur la page des jetons API, cliquez sur le bouton â Ajouter
.
Ajouter un jeton API
Une fois que vous avez crĂ©Ă© votre nouveau jeton API, vous devrez le copier dans votre presse-papiers. Dans le terminal dans lequel vous prĂ©voyez de travailler, exportez le jeton API comme une variable dâenvironnement.
Sur Linux, Mac et autres systĂšmes de type Unix, lancez : export BENCHER_API_TOKEN=YOUR_TOKEN
Sur Windows, lancez : $env:BENCHER_API_TOKEN = "YOUR_TOKEN"
Si vous exécutez ensuite echo $BENCHER_API_TOKEN
ou Write-Output $env:BENCHER_API_TOKEN
respectivement.
Vous devriez voir :
$ echo $BENCHER_API_TOKENYOUR_TOKEN
đ° Note : Si vous passez Ă un autre terminal, vous devrez exporter Ă nouveau le jeton API.
Créez un Projet
Maintenant que nous avons un compte dâutilisateur et un jeton API, nous pouvons crĂ©er un Projet. Dâabord, nous devons savoir Ă quelle organisation notre nouveau projet appartiendra.
Exécutez: bencher org list
Vous devriez voir quelque chose comme:
$ bencher org list[ { "name": "Saul Goodman", "slug": "saul-goodman", "uuid": "4581feb0-6cac-40a9-bd8a-d7865183b01e" "created": "2022-07-06T11:24:36Z", "modified": "2022-07-06T11:24:36Z" }]
Votre sortie devrait ĂȘtre lĂ©gĂšrement diffĂ©rente de celle-ci:
- Le
uuid
est pseudorandom - Le
name
etslug
seront basĂ©s sur votre nom dâutilisateur - Les horodatages
created
etmodified
seront ceux de votre inscription récente
Nous pouvons maintenant crĂ©er un nouveau Projet Ă lâintĂ©rieur de votre Organisation.
Substituez le slug
de votre Organisation Ă lâargument organization
(ie YOUR_ORG_SLUG
) dans la commande ci-dessous.
Exécuter: bencher project create YOUR_ORG_SLUG --name "Save Walter White" --url http://www.savewalterwhite.com
Vous devriez voir quelque chose comme:
$ bencher project create saul-goodman --name "Save Walter White" --url http://www.savewalterwhite.com{ "organization": "4581feb0-6cac-40a9-bd8a-d7865183b01e", "name": "Save Walter White", "slug": "save-walter-white-1234abcd", "uuid": "c6c2a8e8-685e-4413-9a19-5b79053a71b1" "url": "http://www.savewalterwhite.com", "public": true, "created": "2022-07-06T11:36:24Z", "modified": "2022-07-06T11:36:24Z"}
Encore une fois, votre sortie devrait ĂȘtre lĂ©gĂšrement diffĂ©rente que celle-ci.
Il est juste important que cette commande fonctionne.
Prenez note du champ slug
du Projet (ie save-walter-white-1234abcd
).
Exécutez un Rapport
Nous sommes enfin prĂȘts Ă collecter quelques mesures de benchmark! Pour des raisons de simplicitĂ©, nous utiliserons des donnĂ©es fictives dans ce tutoriel.
Exécutez: bencher mock
Vous devriez voir quelque chose comme:
$ bencher mock{ "bencher::mock_0": { "latency": { "value": 3.7865423396154463, "lower_value": 3.4078881056539014, "upper_value": 4.165196573576991 } }, "bencher::mock_1": { "latency": { "value": 16.398332128878437, "lower_value": 14.758498915990593, "upper_value": 18.03816534176628 } }, "bencher::mock_2": { "latency": { "value": 20.88091359871672, "lower_value": 18.792822238845048, "upper_value": 22.969004958588393 } }, "bencher::mock_3": { "latency": { "value": 33.88103801203782, "lower_value": 30.492934210834036, "upper_value": 37.2691418132416 } }, "bencher::mock_4": { "latency": { "value": 40.90515638867921, "lower_value": 36.81464074981129, "upper_value": 44.99567202754713 } }}
Votre sortie devrait ĂȘtre lĂ©gĂšrement diffĂ©rente de celle-ci, car les donnĂ©es sont pseudorandom. Il est juste important que cette commande fonctionne.
Maintenant, exécutons un rapport en utilisant des données fictives de mesures de benchmark.
Substituez votre slug
de Projet Ă lâargument --project
(ie YOUR_PROJECT_SLUG
) dans la commande ci-dessous.
Exécutez: bencher run --project YOUR_PROJECT_SLUG "bencher mock"
Vous devriez voir quelque chose comme:
$ bencher run --project save-walter-white-1234abcd "bencher mock"{ "bencher::mock_0": { "latency": { "value": 0.15496641529475275, "lower_value": 0.13946977376527747, "upper_value": 0.17046305682422802 } }, "bencher::mock_1": { "latency": { "value": 18.648298578180437, "lower_value": 16.783468720362393, "upper_value": 20.513128435998482 } }, "bencher::mock_2": { "latency": { "value": 28.20328182167366, "lower_value": 25.382953639506294, "upper_value": 31.023610003841025 } }, "bencher::mock_3": { "latency": { "value": 34.45732560787596, "lower_value": 31.01159304708836, "upper_value": 37.903058168663556 } }, "bencher::mock_4": { "latency": { "value": 44.9237520767597, "lower_value": 40.43137686908373, "upper_value": 49.41612728443567 } }}
View results:- bencher::mock_0: https://bencher.dev/console/projects/save-walter-white-1234abcd/perf?measures=4358146b-b647-4869-9d24-bd22bb0c49b5&branches=95521eff-09fa-4c02-abe1-dd824108869d&testbeds=5b4a6f3e-a27d-4cc3-a2ce-851dc6421e6e&benchmarks=88375e7c-f1e0-4cbb-bde1-bdb7773022ae- bencher::mock_1: https://bencher.dev/console/projects/save-walter-white-1234abcd/perf?measures=4358146b-b647-4869-9d24-bd22bb0c49b5&branches=95521eff-09fa-4c02-abe1-dd824108869d&testbeds=5b4a6f3e-a27d-4cc3-a2ce-851dc6421e6e&benchmarks=e81c7863-cc4b-4e22-b507-c1e238871137- bencher::mock_2: https://bencher.dev/console/projects/save-walter-white-1234abcd/perf?measures=4358146b-b647-4869-9d24-bd22bb0c49b5&branches=95521eff-09fa-4c02-abe1-dd824108869d&testbeds=5b4a6f3e-a27d-4cc3-a2ce-851dc6421e6e&benchmarks=31dede44-d23a-4baf-b639-63f2ac742e42- bencher::mock_3: https://bencher.dev/console/projects/save-walter-white-1234abcd/perf?measures=4358146b-b647-4869-9d24-bd22bb0c49b5&branches=95521eff-09fa-4c02-abe1-dd824108869d&testbeds=5b4a6f3e-a27d-4cc3-a2ce-851dc6421e6e&benchmarks=c7e32369-f3dd-473d-99a3-6289ae32b38e- bencher::mock_4: https://bencher.dev/console/projects/save-walter-white-1234abcd/perf?measures=4358146b-b647-4869-9d24-bd22bb0c49b5&branches=95521eff-09fa-4c02-abe1-dd824108869d&testbeds=5b4a6f3e-a27d-4cc3-a2ce-851dc6421e6e&benchmarks=779bc477-4964-4bae-aa8c-4da3e388822c
Vous pouvez maintenant consulter les résultats de chacun des benchmarks dans le navigateur.
Cliquez ou copiez et collez les liens de View results
.
Il ne devrait y avoir quâun seul point de donnĂ©es pour chaque benchmark, alors ajoutons dâautres donnĂ©es!
Dâabord, mettons notre slug de Projet en tant que variable dâenvironnement, de sorte que nous nâavons pas Ă le fournir avec le --project
à chaque exécution.
Exécutez: export BENCHER_PROJECT=save-walter-white-1234abcd
Si vous exécutez ensuite: echo $BENCHER_PROJECT
Vous devriez voir:
$ echo $BENCHER_PROJECTsave-walter-white-1234abcd
RĂ©-exĂ©cutons la mĂȘme commande encore sans --project
pour générer plus de données.
Exécutez: bencher run "bencher mock"
Maintenant, générions plus de données, mais cette fois nous transmettrons nos résultats dans bencher run
.
Exécutez: bencher mock | bencher run
Parfois, vous pouvez vouloir sauvegarder vos résultats dans un fichier et que bencher run
les récupÚre.
Exécutez: bencher run --file results.json "bencher mock > results.json"
De mĂȘme, vous pouvez avoir un processus sĂ©parĂ© qui exĂ©cute vos benchmarks et sauvegardez vos rĂ©sultats dans un fichier. Ensuite bencher run
viendra simplement les récupérer.
Exécutez: bencher mock > results.json && bencher run --file results.json
Enfin, mettons en place beaucoup de donnĂ©es en utilisant lâargument --iter
de bencher run
.
Exécutez: bencher run --iter 16 "bencher mock"
đ° Astuce: Consultez les doc CLI sous-commande
bencher run
pour un aperçu complet de tout ce quebencher run
peut faire!
Générer une Alerte
Maintenant que nous avons des donnĂ©es historiques pour nos benchmarks, gĂ©nĂ©rons une Alerte! Les alertes sont gĂ©nĂ©rĂ©es lorsquâun rĂ©sultat de benchmark est dĂ©terminĂ© comme une rĂ©gression de performance. Alors simulons une rĂ©gression de performance!
Exécutez: bencher run "bencher mock --pow 8"
Il devrait y avoir une nouvelle section à la fin de la sortie appelée View alerts
:
View alerts:- bencher::mock_0: https://bencher.dev/console/projects/save-walter-white-1234abcd/alerts/b2329d5a-4471-48ab-bfbd-959d46ba1aa6- bencher::mock_1: https://bencher.dev/console/projects/save-walter-white-1234abcd/alerts/181b1cf5-d984-402a-b0f1-68f6f119fa66- bencher::mock_2: https://bencher.dev/console/projects/save-walter-white-1234abcd/alerts/b9b6c904-c657-4908-97db-dbeca40f8782- bencher::mock_3: https://bencher.dev/console/projects/save-walter-white-1234abcd/alerts/5567ff32-2829-4b6a-969a-af33ce3828db- bencher::mock_4: https://bencher.dev/console/projects/save-walter-white-1234abcd/alerts/49f2768f-ccda-4933-8e1d-08948f57a74d
Vous pouvez maintenant voir les Alertes pour chaque benchmark dans le navigateur.
Cliquez ou copiez et collez les liens de View alerts
.
đ° Astuce: Consultez les doc Seuil & Alertes pour un aperçu complet de comment sont dĂ©tectĂ©es les rĂ©gressions de performances!
đ° FĂ©licitations! Vous avez attrapĂ© votre premiĂšre rĂ©gression de performance! đ