Comment suivre les tailles des binaires Rust dans CI
Everett Pompeii
Les tailles binaires peuvent devenir surchargées avec le temps, surtout en Rust. Le benchmarking continu est la pratique consistant à exécuter des benchmarks à chaque ensemble de modifications pour s’assurer que les changements n’introduisent pas de régressions de performance. Vous pouvez traiter les tailles binaires comme un benchmark et les suivre dans le CI pour détecter les grandes tailles binaires. La façon la plus simple de mettre en œuvre le benchmarking continu pour les tailles binaires Rust est d’utiliser Bencher.
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 !
Étapes pour Bencher Cloud
- Créez un compte Bencher Cloud.
- Créez un jeton API et ajoutez-le à votre CI en tant que secret.
- Créez un workflow pour votre CI, comme GitHub Actions ou GitLab CI/CD.
- Installez le Bencher CLI dans votre workflow CI.
-
Compilez votre code Rust avec la sous-commande
bencher run
dans votre flux de travail CI en utilisant l'option--file-size
définie sur le chemin de sortie de votre binaire ainsi qu'avec l'adaptateurjson
.
Étapes pour Bencher Auto-hébergé
- Créez une instance Bencher Auto-hébergée.
- Créez un compte sur votre instance Bencher Auto-hébergée.
- Créez un jeton API et ajoutez-le à votre CI en tant que secret.
- Créez un workflow pour votre CI, comme GitHub Actions ou GitLab CI/CD.
- Installez le Bencher CLI dans votre workflow CI. Assurez-vous que la version du CLI correspond à la version de votre instance Bencher Auto-hébergée.
-
Compilez votre code Rust avec la sous-commande
bencher run
dans votre flux de travail CI en utilisant l'option--file-size
définie sur le chemin de sortie de votre binaire ainsi qu'avec l'adaptateurjson
et définissez l'option--host
sur l'URL de votre instance Bencher auto-hébergée.
⚖️ Taille de fichier
La sous-commande CLI bencher run
peut être utilisée pour suivre la taille du fichier (c’est-à-dire la taille binaire) de vos livrables avec l’option --file-size
. L’option --file-size
attend un chemin de fichier vers le fichier dont la taille sera mesurée. Sous le capot, bencher run
sort les résultats en format JSON Bencher Metric Format (BMF). Il est donc de bonne pratique d’utiliser explicitement l’adaptateur json
. Pour plus de détails, voir comment suivre la taille de fichier.
La Mesure de taille de fichier
(c’est-à-dire octets (B)
) est recueillie. Seule la valeur de la taille de fichier (c’est-à-dire valeur
) est disponible. Ni valeur_inférieure
ni valeur_supérieure
ne sont collectées. La Mesure de taille de fichier
n’est pas créée par défaut pour tous les Projets. Cependant, lorsque vous utilisez l’option --file-size
, cette Mesure sera automatiquement créée pour votre Projet.
L’option --file-size
peut être utilisée plusieurs fois pour suivre plusieurs tailles de fichier.
Track your benchmarks in CI
Have you ever had a performance regression impact your users? Bencher could have prevented that from happening with continuous benchmarking.