c# - 为什么 for 循环初始化中的条件比循环内部更快?

标签 c# optimization

我正在做一些优化并发现:

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 ...)和原点(0,0)字段

最佳答案

((x * x) ^ (y * y)) != 1 时,第二个代码结束内部循环,而第一个代码仅跳过内部循环的一次迭代。由于他们不做同样的事情,所以比较性能的所有赌注都落空了。

关于c# - 为什么 for 循环初始化中的条件比循环内部更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40473028/

相关文章:

c - 在 C 中以某种方式对某些值更好

java - 计算 Activity 调用的更快算法

python - 替换字符串中的子字符串

c# - 在 MVC/C# 中创建 CSV 文件并通过 FTP 上传到服务器

c# - .NET : If my . NET 自动化 Office,客户是否必须安装 Office?

c# - 删除特定的 XML 标签

谁能帮我优化这个for循环使用SSE?

c# - 差一错误和突变测试

c# - 上传到 FTP 后如何在文件上设置 DateTimeStamp?

c++ - 指针递增 1 来遍历数组的元素是否更快?