LINQ扩展方法的顺序不影响性能吗?

LINQ扩展方法的顺序不影响性能吗?,第1张

LINQ扩展方法的顺序不影响性能吗?

我猜想,将它放在前面会比较慢,因为它必须先找到所有匹配的项,然后采用第一个,然后使用FirstOrDefault可以产生第一个找到的项。有人可以解释为什么我走错了路吗?

您的路线不正确,因为您的第一条陈述完全不正确。

Where
不是 需要找到所有匹配的物品 之前
获取第一个匹配项。
Where
“按需”获取匹配项;如果您只要求第一个,则只会获取第一个。如果只要求前两个,则只会获取前两个。

乔恩·斯基特(Jon
Skeet)在舞台上表现不错。假设您有三个人。第一人称洗牌盒。第二个人有一件T恤,上面写着“卡片是红色的”。第三人称戳第二人说“给我第一张牌”。第二个人一遍又一遍地戳第一个人,
直到 第一个人交出红牌,第二个人随后将其递给第三人。第二个人没有理由继续戳第一个人。任务完成了!

现在,如果第二个人的T恤显示“按等级升序排列”,则情况将大为不同。现在,第二个人确实确实需要从第一人手中获得每张纸牌,以便在将第一张纸牌交给第三人之前找到卡组中最低的纸牌。

现在,这应该为您提供必要的直觉,以告诉您订单何时因性能原因而重要。“给我红牌,然后对它们进行排序”的最终结果与“对所有卡进行排序,然后给我红卡”的结果完全相同,但是前者的速度要快得多,因为您不必花任何时间对卡片进行排序。您将要丢弃的黑卡。



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

原文地址: http://outofmemory.cn/zaji/4895132.html

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

发表评论

登录后才能评论

评论列表(0条)

保存