簡體   English   中英

為什么for循環初始化中的條件比循環內部要快?

[英]Why is a condition in a for-loop initialisation faster than inside the loop?

我做了一些優化,發現這:

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++)
    {

    }
}

這里發生了什么?

目的是避免對角線(-1,-1; -1,1 ...)和origin(0,0)字段

第二個代碼在((x * x) ^ (y * y)) != 1時結束內部循環,而第一個代碼僅跳過內部循環的一次迭代。 由於他們做的不是同一件事,因此所有賭注都無法比較性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM