Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

境界チェック

デフォルトでは、Rust でのスライスやベクターなどのコンテナー型へのアクセスには 境界チェックが伴います。これはパフォーマンスに影響する可能性があります。たとえばホットループ内などです。 ただし、影響する頻度は予想より少ないかもしれません。

コンテナーの長さをコンパイラーが把握できるようにコードを変更し、 境界チェックを最適化で取り除けるようにする安全な方法はいくつかあります。

  • ループ内の直接的な要素アクセスを、イテレーションを使用する形に置き換える。
  • ループ内で Vec にインデックスアクセスする代わりに、ループの前に Vec のスライスを作成し、 ループ内ではそのスライスにインデックスアクセスする。
  • インデックス変数の範囲に対するアサーションを追加する。 例 1, 例 2

これらを機能させるのは難しい場合があります。Bounds Check Cookbook では、このトピックについて さらに詳しく説明しています。

最後の手段として、unsafe なメソッドである get_uncheckedget_unchecked_mut があります。