c# – 迭代Linq结果时出现奇怪的缓慢

c# – 迭代Linq结果时出现奇怪的缓慢,第1张

概述在探索最近的 Linq question时,我注意到算法似乎相当慢.深入挖掘我注意到它不是linq代码,但结果的输出后来耗费了很长时间. (感谢Marc Gravel顺便说一句,我已经看过了最简单的Linq.) 码: DateTime dt = DateTime.Now; Console.WriteLine("Alg Start " + dt.Second + "." + dt.M 在探索最近的 Linq question时,我注意到算法似乎相当慢.深入挖掘我注意到它不是linq代码,但结果的输出后来耗费了很长时间. (感谢marc Gravel顺便说一句,我已经看过了最简单的linq.)

码:

DateTime dt = DateTime.Now;        Console.Writeline("Alg Start " + dt.Second + "." + dt.Millisecond);        var qry = from l in Enumerable.Range(100000,999999)                  let s = l.ToString()                  let sReversed = new string(s.Reverse().ToArray())                  from i in Enumerable.Range(3,9)                  let t = (l * i).ToString()                  where t == sReversed                  select new { l,i };        dt = DateTime.Now;        Console.Writeline("Alg End " + dt.Second + "." + dt.Millisecond);        foreach (var row in qry)            Console.Writeline("{0} x {1} = {2}",row.l,row.i,row.l * row.i);        dt = DateTime.Now;        Console.Writeline("disp End " + dt.Second + "." + dt.Millisecond);

输出:

Alg Start 20.257Alg End   20.270109989 x 9 = 989901219978 x 4 = 8799121099989 x 9 = 9899901disp End  31.322

.13秒计算和超过11来显示?!?这是什么原因?

解决方法 原因是在枚举之前查询实际上不会运行.在liNQ to对象中,它只是设置了一堆代理,当你遍历枚举器时会被调用.如果您要在查询中添加ToList()以实现它,您会看到所花费的时间将转移到设置并远离显示. 总结

以上是内存溢出为你收集整理的c# – 迭代Linq结果时出现奇怪的缓慢全部内容,希望文章能够帮你解决c# – 迭代Linq结果时出现奇怪的缓慢所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1225319.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存