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
bencherenveloppe 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 | shWindows
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
Powershellen 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.5.0Cré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
uuidest pseudorandom - Le
nameetslugseront basĂ©s sur votre nom dâutilisateur - Les horodatages
createdetmodifiedseront 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-4da3e388822cVous 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-1234abcdRĂ©-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 runpour un aperçu complet de tout ce quebencher runpeut 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-08948f57a74dVous 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! đ