gpt4 book ai didi

C#, lambda : How are redundant calls handled?

转载 作者:太空宇宙 更新时间:2023-11-03 20:47:49 28 4
gpt4 key购买 nike

我很好奇编译器如何处理下面的表达式:

    var collapsed = elements.GroupBy(elm => elm.OrderIdentifier).Select(group => new ModelsBase.Laser.Element()
{
CuttingDurationInSeconds = group.Sum(itm => itm.CuttingDurationInSeconds),
FladderDurationInSeconds = group.Sum(itm => itm.FladderDurationInSeconds),
DeliveryDate = group.Min(itm => itm.DeliveryDate),
EfterFladderOpstilTid = group.First().EfterFladderOpstilTid,
EfterRadanOpstilTid = group.First().EfterRadanOpstilTid,
});

如您所见,我使用了两次组求和,所以有谁知道“组”列表是否会迭代两次以获得两个总和,或者是否会对其进行优化以便实际上只有 1 次完整迭代列表。

最佳答案

LINQ 通常不是达到高性能的最佳方式,您获得的是编程的生产力,您无需太多代码行即可获得结果。

优化的可能性是有限的。对于 SQL 查询,有一个经验法则:一个查询优于两个查询。

1) SQL_Server 只有一次往返

2) SQL Server 是用来优化这些查询的,如果服务器知道下一步要做什么,优化就会变得更好。优化是针对每个查询完成的,而不是针对多个查询。

在 Linq to Objects 的情况下,构建大型查询绝对没有任何好处。正如您的示例所示,它可能会导致多次迭代。您让您的代码更简单、更易于阅读 - 但您放弃了控制,因此放弃了性能。

关于C#, lambda : How are redundant calls handled?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59069564/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com