【问题标题】:Why are serial foreach operations slower than parallel foreach operations when dealing with the file system (Windows)?为什么在处理文件系统(Windows)时串行 foreach 操作比并行 foreach 操作慢?
【发布时间】:2015-11-02 09:04:06
【问题描述】:

我有一个程序可以检查多个文件,然后替换某些字符串(通常是 100-200 个文件,每个不超过 10-20kb)。

我原以为Parallel ForEach 会是去这里的方式,但这实际上比一个好的'ol 系列 ForEach 慢。知道为什么吗?

【问题讨论】:

  • 当操作到达硬件时,仍然只有一个磁盘。跨 CPU 内核的任务切换很容易,但磁盘开销很昂贵。
  • @David 很棒的回答,谢谢!
  • @MatthewPatrickCashatt 喘口气。 Preston 的评论是系统自动生成的,因为他的投票结果很接近。除了您之外,没有其他人可以看到 Question may already have an answer... 位 - 它的唯一目的是提示您有人认为这可能回答您的问题。如果确实如此,您可以接受它已经回答了您的问题,如果没有,请不要担心。令人惊讶的是,你在这里已经四年多了,5k 代表,这对你来说是个新闻……保持冷静,继续。
  • 也就是说,可能值得阅读 Preston 提供的链接 - 它可能无法回答您的问题,但如果您对并行化磁盘 I/O 并没有提供任何性能提升感到惊讶那么它可能有很多你可以从中学习的信息(毕竟,这就是我们都在这里的原因)。

标签: c# windows parallel.foreach


【解决方案1】:

在 OP 的 cmets 中引用 @David:

当操作到达硬件时,仍然只有一个磁盘。跨 CPU 内核的任务切换很容易,但磁盘上的开销是昂贵的。

【讨论】:

  • 这确实让我想知道......当我写评论时,我几乎使用了像“驱动臂”或“读/写头”这样的术语,这些术语越来越老化。我想知道固态架构的持续发展是否不会长期导致设备上出现多个 I/O 通道。相当于多个 CPU 内核的非易失性存储介质。即使使用 SSD,存储仍然是高性能系统的一个重要瓶颈。但摆脱运动部件的限制确实会降低这种障碍的潜力。
  • @David--有趣的是你应该这么说;我刚从亚马逊订购了一个 SSD,希望能缓解瓶颈。再次感谢!
猜你喜欢
  • 2018-02-04
  • 1970-01-01
  • 2023-01-20
  • 2016-05-09
  • 1970-01-01
  • 2021-03-18
  • 2016-03-22
  • 2014-11-21
  • 1970-01-01
相关资源
最近更新 更多