速度:创建一个新变量或将变量设置为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
}
}
}
为什么不使用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上,而不是每次执行相同的