2015-12-02 7 views
5

Ich schreibe ein Programm, das ziemlich rechenintensiv ist, und es ist ärgerlich langsam, im Debug-Modus zu laufen.Wie kompiliere und führe ich ein optimiertes Rust-Programm mit aktivierter Überlaufprüfung aus?

Mein Programm wird auch von Integerüberläufe geplagt, weil ich Daten aus u8 Arrays Lesen bin und u8 Art verbreitet sich auf unerwarteten Orten über Typinferenz und Rust bevorzugt eher überlaufen als auf ganze Zahlen zu größeren Typen zu fördern.

Gebäude im Release-Modus deaktiviert Überlauf überprüft:

cargo run --release 

Wie kann ich Rust ausführbare Datei mit Optimierungen und Laufzeitüberlauf überprüft und freigegeben bauen?

Antwort

7

vielleicht die einfachste Sache zu build in test or dev mode with optimizations sein:

[profile.dev] 
opt-level = 3 

Alternativ Sie im Release-Modus mit Debug Behauptungen aktiviert kompilieren können:

[profile.release] 
debug-assertions = true 
+1

Hinweis: haben ein gutes Speed-up zu bekommen, aber nach wie vor sinnvolle Stacktraces möchten Sie vielleicht nur 'opt-level = 1' verwenden. Jeder Funktionskörper wird optimiert, aber im Allgemeinen gibt es kein (oder wenig) Inlining. Natürlich ist es nicht so schnell ... –

+0

Für Inlining gibt es '# [inline (nie)]' und '# [inline (immer)]' (natürlich nur dann, wenn der Compiler keine gute Arbeit leistet, weil die übermäßige Verwendung dieser Attribute fehlschlagen kann). – Kornel