[英]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.