Ich habe eine Datei mit einigen Benchmarks und Tests und würde gerne gegen stabil, beta und allabendlich testen. Allerdings benutze ich weder den Benchmark noch stable / beta meckern. Gibt es eine Möglichkeit, alle Benchmark-Teile bei Verwendung von stable / beta zu verstecken?
Als Beispiel den folgenden Code aus dem Buch :
%Vor%Ich benutze Rostup und möchte, dass die gleiche Datei mit allen Builds funktioniert und etwas wie folgt aufruft:
%Vor% Ich konnte #![feature(test)]
mit #![cfg_attr(feature = "bench", feature(test))]
ausblenden. Kann ich etwas Ähnliches wie die übrigen Benchmark-Teile machen? Was ist eine gute Ressource für Feature-Flags?
In meinen Projekten platziere ich Benchmarks in einem separaten Modul, genau wie ich es für Tests mache. Ich erstelle dann eine Cargo-Funktion, die sie ermöglicht. In diesem Auszug habe ich den Feature-Namen unstable
verwendet, aber Sie können alles verwenden, was Sie möchten:
Cargo.toml
%Vor%src / lib.rs
%Vor% Die Zeile #[cfg(all(feature = "unstable", test))]
sagt, dass nur das folgende Element kompiliert werden soll, wenn das Feature gesetzt ist und wir trotzdem im Testmodus kompilieren. Ebenso aktiviert #![cfg_attr(feature = "unstable", feature(test))]
nur das test
-Feature-Flag, wenn das Feature unstable
aktiviert ist.
Hier ist ein Beispiel in der Wildnis .
Cargo unterstützt ein Bench-Verzeichnis für Benchmark-Tests. Wenn du sie dort hineinlegst, kannst du "cargo bench" niemals auf beta / stable laufen lassen und nur nachts laufen lassen.
Gibt es eine Möglichkeit, alle Benchmark-Teile bei Verwendung von stable / beta zu verstecken?
Ja, und Sie können dies automatisch mit einem Build-Skript tun. Daher ist es nicht erforderlich,% anzugeben. co_de% bei der Frachtausführung. Im Build-Skript können Sie die Version des Rust-Compilers erkennen und ein Feature definieren (zB --features
). Dann können Sie im Quellcode Ihre Benchmarks gruppieren und aktivieren, wenn das Feature definiert wurde.
"nightly"
Cargo.toml
build.rs
Tags und Links benchmarking rust