有人告诉我,以下代码块之间存在性能差异.
foreach (Entity e in entityList)
{
....
}
Run Code Online (Sandbox Code Playgroud)
和
for (int i=0; i<entityList.Count; i++)
{
Entity e = (Entity)entityList[i];
...
}
Run Code Online (Sandbox Code Playgroud)
哪里
List<Entity> entityList;
Run Code Online (Sandbox Code Playgroud)
我不是CLR期望,但从我可以告诉他们应该归结为基本相同的代码.有没有人有这样或那样的混凝土(哎呀,我拿着装满污垢)的证据?
迭代没有元素的数组或列表时,foreach 与 for 相比似乎非常慢。运行下面的代码,我得到的结果是:
3ms
143ms
7ms
foreach 真的很慢还是我做错了什么?
var l = new List<int>();
var watch = new Stopwatch();
var test = 0;
watch.Start();
for (int i = 0; i < 10000000; i++)
if (l.Count > 0)
test = 1;
watch.Stop();
Debug.Log(watch.ElapsedMilliseconds);
watch.Reset();
watch.Start();
for (int i = 0; i < 10000000; i++)
foreach (var item in l)
test = 1;
watch.Stop();
Debug.Log(watch.ElapsedMilliseconds);
watch.Reset();
watch.Start();
for (int i = 0; i < 10000000; i++)
for (int j = 0; j …Run Code Online (Sandbox Code Playgroud)