速度:创建一个新变量或将变量设置为0

本文关键字:变量 设置 一个 创建 速度 新变量 | 更新日期: 2023-09-27 18:18:41

我正在制作一款小型游戏,它有许多循环,它们都使用特定的变量adjacentSquares。但是,在每个循环之后,这应该设置为0。是每次重新创建这个变量还是将其设置为0,哪个更快?有没有可能有某种"异国情调"的方法,会表现得更好?

相关(未完成)代码:

void Update () 
    {           
        int adjacentSquares = 0;
        for (int x = 0; x <= gridX; x++)
        {
            for (int y = 0; y <= gridY; y++)
            {
                if (grid[x - 1,y - 1] == true)
                    adjacentSquares += 1;
                //and some more logic
            }
        }
    }

速度:创建一个新变量或将变量设置为0

为什么不使用System.Diagnostics.Stopwatch类进行实验并测量所经过的时间呢?http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx

在循环之前设置Stopwatch对象,然后在循环之后测量经过的时间。然后,报告你的发现:D

真正的答案是:试试吧!

但是,我不认为会有速度上的差异。如果有的话,您的堆栈将使用4字节的内存(每个变量),但即使这样也不能保证。有一个很好的改变(如果这里有性能上的好处),c#编译器或JIT编译器会识别出第一个变量不再被使用,所以它会简单地为后续变量使用相同的内存。但我要重复我之前说过的:运行一些测试——这是对你的问题的唯一正确答案。

如果你真的想在这里提高性能,你可以考虑在这里做一个并行解决方案,这取决于每个单独的计算是否依赖于你之前所做的所有计算。

你甚至可以在LINQ中这样做,这取决于你正在做的"一些更多的逻辑"

为了进一步提高性能:

void Update () 
{           
    int adjacentSquares = 0;
    for (int x = -1; x < gridX; x++)
    {
        for (int y = -1; y < gridY; y++)
        {
            if (grid[x, y])
                adjacentSquares++;
            //and some more logic
        }
    }
}

我不知道为什么你需要从-1(0 -1)开始,但如果你有,然后把它放在for上,而不是每次执行相同的