2015-12-02 12 views
5

非常に計算量が多く、デバッグモードで動作するのが面倒です。オーバーフローチェックを有効にして最適化されたRustプログラムをコンパイルして実行する方法

私のプログラムはまた、私はu8配列からデータを読んでいるので、整数オーバーフローによって悩まさとu8タイプは型推論を経由して、予期せぬ場所に広がり、錆がオーバーフローするのではなく、より大きな型に整数を促進することを好むています。

リリースモードでビルドはオーバーフローのチェックを無効にします。

cargo run --release 

にはどうすればオーバーフローのチェックが同様に有効な最適化ランタイムと錆の実行可能ファイルを構築することができますか?

答えて

7

最も簡単な方法は、build in test or dev mode with optimizationsに次のようになります。

[profile.dev] 
opt-level = 3 

また、デバッグアサーションをリリースモードでコンパイル可能性が有効になって:

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

注:良いスピードアップを取得し、まだ持っています意味のあるスタックトレースは 'opt-level = 1'だけを使いたいかもしれません。各関数本体は最適化されますが、一般的にはインライン化はありません(またはほとんど)。もちろん、それは高速ではありません... –

+0

インライン化には、#[インライン(決して)]と#[インライン(常に)] 'があります(もちろん、コンパイラがうまく行かないことがわかっている場合、これらの属性の過度使用が逆行する可能性があるため)。 – Kornel

関連する問題