数値のモジュラスを計算することは、少なくとも単純な算術テスト (数値が配列の長さを超えるかどうかを確認するなど) と比較して、多少高価な操作であると思います。これが実際に当てはまる場合、たとえば次のコードを置き換える方が効率的ですか。
res = array[(i + 1) % len];
以下で?:
res = array[(i + 1 == len) ? 0 : i + 1];
前者の方が見やすいですが、後者の方が効率的ではないでしょうか。もしそうなら、コンパイル済み言語が使用されたときに、最適化コンパイラーが最初のスニペットを 2 番目のスニペットに置き換えることを期待できますか?
もちろん、この「最適化」(実際に最適化である場合) がすべての場合に機能するとは限りません (この場合、i+1
が を超えない場合にのみ機能しlen
ます)。