Rust で何百万回も実行される (ピクセル処理を考えてください) 整数関数を作成する場合、C/C++ と同様に、最高のパフォーマンスで操作を使用すると便利です。
リファレンス マニュアルでは動作の変更について説明していますが、どのメソッドが標準(注 1 を参照)の整数算術演算よりもパフォーマンスが高いかは必ずしも明確ではありません。wrapping_add
Cの追加と同等のものにコンパイルされると思います。
標準演算 (加算 / 減算 / 乗算 / モジュロ / 除算 / シフト / ビット操作など) のうち、デフォルトでは使用されない、より高性能な代替手段を持つ演算はどれですか?
ノート:
- 標準では、 シンボルを使用した整数演算、または...などを意味します。数式を記述するときに使用するもの-オーバーフローをラップまたは返すメソッドのいずれかを使用する特別な必要がない限り。
a + b
i / k
c % e
- この質問に答えるには、調査が必要かもしれません。したがって、結果のアセンブリを見て、どの操作がチェックされていない/プリミティブ操作を使用しているかを確認することで、いくつかのチェックを行うことができてうれしいです。
- チェックされた操作とチェックされていない操作の速度の違いは重要ではない可能性があります。その場合、関数の「高速」バージョンを作成して、「安全な」バージョンと比較できるようにしたいと考えています。与えられた機能にとってそれが合理的な選択であるかどうかについての私自身の結論に。
- ピクセル処理について言及しましたが、SIMD が可能な解決策として登場しました。これは良い提案ですが。SIMD を使用して最適化できないケースがまだ残っているため、高速な整数演算の一般的なケースはまだ考慮すべき事項です。