加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在linq foreach中调用一个方法 – 有多少开销?

发布时间:2020-12-15 06:47:18 所属栏目:百科 来源:网络整理
导读:我正在考虑用 Linq替换很多内联的foreach,这样做会产生新的方法,例如: 当前: foreach(Item in List){ Statement1 Statement2 Statement3} 理念: List.Foreach(Item = Method(Item)) 显然,Method()包含Statement1..3 这是一种好的做法还是数千次调用方法会
我正在考虑用 Linq替换很多内联的foreach,这样做会产生新的方法,例如:
当前:
foreach(Item in List)
{
    Statement1
    Statement2
    Statement3
}

理念:

List.Foreach(Item => Method(Item))

显然,Method()包含Statement1..3

这是一种好的做法还是数千次调用方法会降低性能?我的名单有10,000-100,000个元素.

解决方法

好吧,首先,您可以使用方法组转换使ForEach语句更有效
List.ForEach(Method);

这消除了一个间接层.

就个人而言,我认为这不是一个好主意.第一种方法更具可读性,并且可能也可以执行.在这里使用List< T> .ForEach有什么好处?

Eric Lippert在excellent blog post中更多地讨论了这个问题.我会使用List< T> .ForEach如果你已经有一个你想要针对每个元素执行的委托,但是我不会仅为了一个代表而引入一个委托和一个额外的方法它.

在效率方面,我不希望看到太大的差异.第一种形式可能执行得更好,因为它没有委托调用的间接 – 但如果ForEach中的迭代循环利用它可以访问内部数据结构的事实,则第二种形式可能更有效.列表< T>.我非常怀疑你会注意到它.当然,如果你真的很烦,你可以尝试测量它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读