私はまだ整数オーバーフローを処理するためにoverflowerを改善しています。 1つ目の目標は、オーバーフロー時のパニックを避けるために#[overflow(wrap)]
を使用できるようにすることでした。しかし、標準整数型の.wrapping_div(_)
と.wrapping_rem(_)
の関数は、ゼロで割ると実際はパニックに陥ることが分かりました。編集:このユースケースをより良く動機づけるには:割り込みハンドラ内で、パニックを避けることが絶対に必要です。私はdiv-by-zero条件は非常にありそうもないと仮定しますが、有効な定義については "有効な"値を返す必要があります。整数除算/剰余について、パニックを起こさずにオーバーフローを処理する最速の方法は何ですか?
(コードに#[overflow(saturate)]
という注釈が付けられているときに行う)値を飽和させる可能性がありますが、これは比較的遅くなる可能性があります(特に他の操作も飽和しているため)。ですから、私は#[overflow(no_panic)]
モードを追加して、パニックを完全に回避し、すべてのケースでほぼ同じ速さで#[overflow(wrap)]
になります。
私の質問は以下の通りです。何かを返す最速の方法は何ですか(何も気にしないでください)。
*何か(何を気にしない)*を返すための最速の方法は何ですか - プログラムの正しさが問題にならない場合、私はすべての部門を変換することをお勧めしたい/に余り引数にかかわらず、定数値 '42'になります。これにより、ほとんどのプログラムの速度が向上します。 – Shepmaster
私はこの質問が全く特有のものではないと思う。私はおそらくそれを言い換えると(無関係なものをすべて削除する)、別のタグを選んだ。それはx86とアセンブリの人々によって最高に答えられるかもしれないようです... –
いくつかのケースでは、0は42より速いかもしれません( 'xor eax、eax' vs 'mov eax、42')。 Ditto Lukas。 – dtolnay