1
私は最適化のビットをしていると、これがことが判明しています:forループの初期化の条件がループの内部よりも速いのはなぜですか?
for (int x = -1; x < 2; x++)
{
for (int y = -1; y < 2 ; y++)
{
if (((x * x)^(y * y)) != 1)
{
continue;
}
}
}
がこのとして実行するように倍の長以上かかる:
for (int x = -1; x < 2; x++)
{
for (int y = -1; y < 2 && ((x * x)^(y * y)) == 1; y++)
{
}
}
はここで何が起こっていますか?第二のコードは、最初のに対し、内側のループ場合((x * x)^(y * y)) != 1
を終了する;(... -1,1 -1、-1)および原点(0,0)フィールド
どのようにテストしましたか? – Steve
@Steveは、両方のバージョンを10回連続して10回実行しました。デバッグモード – user3488765
タイミングテストは、最適化を有効にしたリリースビルドを使用し、デバッガを使用しないことをお勧めします。 – hatchet