Ignoriere Benchmarks bei der Verwendung von stable / beta

7

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?

    
Dominik Müller 07.06.2016, 08:53
quelle

3 Antworten

11

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 .

    
Shepmaster 07.06.2016, 12:27
quelle
7

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.

    
Steve Klabnik 07.06.2016 20:09
quelle
5
  

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"

%Vor%

Cargo.toml

%Vor%

build.rs

%Vor%     
malbarbo 07.06.2016 13:03
quelle

Tags und Links