4

目前我正在开发一款 2D XNA 游戏。它需要优化,因为多人模式表现不佳。在代码中,我们主要使用 foreach 循环,并没有在任何地方使用 LINQ 或 yield return 语句。我知道我们可以在这里赢得一些表现。由于 for 循环更快,我正在考虑替换所有 foreach 循环。

但是,我不能从 for 循环中的 yield return 语句中受益,可以吗?
此外,在使用 for 循环进行迭代时,LINQ 是否仍然有用?


例如,我有一个包含 1000 多个形状(正方形、三角形、圆形......)的列表,我想枚举某个位置的所有正方形(75%)。这样做的最佳方法是什么?
我应该使用什么?数组、列表、for 循环、foreach 循环、yield return 和/或 LINQ?

4

3 回答 3

4

由于这是性能问题,唯一正确的答案是衡量。

一般来说,直接使用for可能是最快的方法,因为其余的为每次迭代添加更多代码。尝试衡量自己 - 看看它对你的情况是否重要,以及你最喜欢阅读哪个版本的代码。

于 2012-12-20T07:13:59.303 回答
4

在添加项目时执行您需要做的任何分组或排序,而不是在检索它们时。我这样说是因为您(我假设)只添加每个项目一次,但正如您所说,您要多次检索它们。

于 2012-12-20T07:43:55.350 回答
0

绝对使用For循环。如果不是为了性能增益(这可以忽略不计),您将不会创建枚举器对象。所以你不会对 GC 施加不必要的压力。

于 2012-12-20T07:30:48.210 回答