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

来自 LINQ 的 List.AddRange 结果用 AsParallel() 标记

来自 LINQ 的 List.AddRange 结果用 AsParallel() 标记

C#
一只名叫tom的猫 2023-07-09 15:26:21
考虑以下示例。result.AddRange(     data.AsParallel()         .Where(cs => cs is internalHistorySet)             .Select(matchingItem => new History(source, (internalHistorySet)matchingItem)));我对代码有两个问题:only会AsParallel()影响查询本身吗?IMO 如果这些项目被并行添加,因为AddRange只需要一个IEnumerable. 我理解代码的方式是它只是并行执行查询,这意味着查询本身可能比不使用 AsParallel 更快。但是,AddRange其本身的性能不会改变,因为它不受影响。立场重要吗AsParallel()?如果放在查询的末尾,结果会一样吗?问候和感谢
查看完整描述

1 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

AsParallel() 只影响查询本身吗?

是的。

但是,AddRange 本身的性能不会改变,因为它不受影响。

正确的。我的意思是,AddRange 可能需要更长的时间,但那是因为 LINQ 查询以不同的方式提供可枚举(正在迭代)。性能差异是由于 LINQ 查询而不是AddRange其本身造成的。

如果放在查询的末尾,结果会一样吗?

AsParallel如果放在最后就没有任何意义了。只影响LINQ 查询中它后面的AsParallel内容。之后什么都没有==毫无意义。


查看完整回答
反对 回复 2023-07-09
  • 1 回答
  • 0 关注
  • 84 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信