Wie man Rust-Binärgrößen in CI verfolgt
Everett Pompeii
Binärgrößen können im Laufe der Zeit, insbesondere in Rust, aufblähen. Kontinuierliches Benchmarking ist die Praxis, Benchmarks bei jedem Änderungssatz durchzuführen, um sicherzustellen, dass die Änderungen keine Leistungseinbußen verursachen. Sie können Binärgrößen als Benchmark behandeln und sie im CI verfolgen, um große Binärgrößen zu erkennen. Der einfachste Weg, um kontinuierliches Benchmarking für Rust-Binärgrößen zu implementieren, ist die Verwendung von Bencher.
Was ist Bencher?
Bencher ist eine Suite von kontinuierlichen Benchmarking-Tools. Hatten Sie jemals eine Performance Regression, die Ihre Nutzer beeinflusste? Bencher hätte das verhindern können. Bencher ermöglicht es Ihnen, Leistungsregressionen vorher zu erkennen und zu verhindern, bevor sie in die Produktion gelangen.
- Ausführen: Führen Sie Ihre Benchmarks lokal oder in CI mit Ihren bevorzugten Benchmarking-Tools aus. Das
bencher
CLI umfasst einfach Ihr vorhandenes Benchmark-Harness und speichert die Ergebnisse. - Verfolgen: Verfolgen Sie die Ergebnisse Ihrer Benchmarks im Laufe der Zeit. Überwachen, abfragen und grafisch darstellen der Ergebnisse mit der Bencher Web Konsole auf Basis des Quellzweigs, Testbetts und Maßnahme.
- Auffangen: Fangen Sie Leistungsregressionen in CI ab. Bencher verwendet modernste, anpassbare Analysen, um Leistungsregressionen zu erkennen, bevor sie in die Produktion gelangen.
Aus denselben Gründen, warum Unit Tests in CI laufen, um Feature Regressionen zu verhindern, sollten Benchmarks in CI mit Bencher ausgeführt werden, um Leistungsregressionen zu verhindern. Performance-Bugs sind Fehler!
Schritte für Bencher Cloud
- Erstellen Sie ein Bencher Cloud-Konto.
- Erstellen Sie ein API-Token und fügen Sie es Ihrem CI als Geheimnis hinzu.
- Erstellen Sie einen Workflow für Ihr CI, wie GitHub Actions oder GitLab CI/CD.
- Installieren Sie die Bencher CLI in Ihrem CI-Workflow.
-
Kompilieren Sie Ihren Rust Code mit dem
bencher run
Unterbefehl in Ihrem CI-Workflow unter Verwendung der--file-size
Option, die auf den Ausgabepfad für Ihre Binärdatei zusammen mit demjson
Adapter gesetzt ist.
Schritte für die Bencher-Self-Hosted
- Erstellen Sie eine Bencher Self-Hosted Instanz.
- Erstellen Sie ein Konto auf Ihrer Bencher Self-Hosted Instanz.
- Erstellen Sie ein API-Token und fügen Sie es als Geheimnis zu Ihrem CI hinzu.
- Erstellen Sie einen Workflow für Ihr CI, wie GitHub Actions oder GitLab CI/CD.
- Installieren Sie die Bencher-CLI in Ihrem CI-Workflow. Stellen Sie sicher, dass die CLI-Version mit der Version Ihrer Bencher Self-Hosted Instanz übereinstimmt.
-
Kompilieren Sie Ihren Rust Code mit dem
bencher run
Unterbefehl in Ihrem CI-Workflow unter Verwendung der--file-size
Option, die auf den Ausgabepfad für Ihre Binärdatei zusammen mit demjson
Adapter gesetzt ist, und richten Sie die--host
Option auf die URL Ihrer Bencher Self-Hosted Instanz ein.
⚖️ Dateigröße
Der bencher run
CLI-Unterbefehl
kann verwendet werden, um die Dateigröße (d.h. Binärgröße) Ihrer Lieferobjekte mit der Option --file-size
zu verfolgen.
Die Option --file-size
erwartet einen Dateipfad zu der Datei, deren Größe gemessen wird.
Unter der Haube gibt bencher run
die Ergebnisse alsBencher-Metrik-Format (BMF) JSON aus.
Es ist daher ratsam, ausdrücklich den json
-Adapter zu verwenden.
Für weitere Details siehe wie man die Dateigröße verfolgt.
Die file-size
-Messung (d.h. Bytes (B)
) wird erfasst.
Nur der Wert der Dateigröße (d.h. value
) ist verfügbar.
Weder lower_value
noch upper_value
werden gesammelt.
Die file-size
-Messung wird nicht standardmäßig für alle Projekte erstellt.
Wenn Sie jedoch die Option --file-size
verwenden, wird diese Messung automatisch für Ihr Projekt erstellt.
Die Option --file-size
kann mehrfach verwendet werden, um mehrere Dateigrößen zu verfolgen.
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.