为了账号安全,请及时绑定邮箱和手机立即绑定

前方比 for 慢 20 倍?

前方比 for 慢 20 倍?

C#
开心每一天1111 2022-08-20 16:37:48
迭代没有元素的数组或列表,foreach 似乎比 for 慢。运行下面的代码,我得到的结果是:3ms143ms7msforeach真的很慢还是我做错了什么?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 < l.Count; j++)         test = 1;watch.Stop();Debug.Log(watch.ElapsedMilliseconds);
查看完整描述

1 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

循环需要使用枚举数来循环访问集合,这需要访问属性并在每次迭代时调用该方法,这需要一些处理时间。foreachCurrentMoveNext

循环只需要在每次迭代时调用,因此这比循环少一个调用,这在性能上略有不同。forget_Itemforeach


查看完整回答
反对 回复 2022-08-20
  • 1 回答
  • 0 关注
  • 88 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号