Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在处理文件系统(Windows)时,为什么串行foreach操作比并行foreach操作慢?_C#_Windows_Parallel.foreach - Fatal编程技术网

C# 在处理文件系统(Windows)时,为什么串行foreach操作比并行foreach操作慢?

C# 在处理文件系统(Windows)时,为什么串行foreach操作比并行foreach操作慢?,c#,windows,parallel.foreach,C#,Windows,Parallel.foreach,我有一个程序,可以检查多个文件,然后替换某些字符串(通常是100-200个文件,每个文件不超过10-20kb) 我本以为并行ForEach是实现这一点的方法,但这实际上比好的“ol”串行ForEach慢。知道为什么吗?在评论中引用@David的话: 当操作到达硬件时,仍然只有一个磁盘。在CPU核之间切换任务很容易,但磁盘上的开销很高 当操作到达硬件时,仍然只有一个磁盘。在CPU核之间切换任务很容易,但磁盘上的开销很昂贵。@David真棒的回答,谢谢@马修·帕特里克·卡萨特,深呼吸。普雷斯顿的评论

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


我本以为并行ForEach是实现这一点的方法,但这实际上比好的“ol”串行ForEach慢。知道为什么吗?

在评论中引用@David的话:


当操作到达硬件时,仍然只有一个磁盘。在CPU核之间切换任务很容易,但磁盘上的开销很高


当操作到达硬件时,仍然只有一个磁盘。在CPU核之间切换任务很容易,但磁盘上的开销很昂贵。@David真棒的回答,谢谢@马修·帕特里克·卡萨特,深呼吸。普雷斯顿的评论是由系统自动生成的,这是他以微弱优势投票的结果。除了您之外,没有其他人可以看到
问题可能已经有了答案…
位-其唯一目的是提示您有人认为这可能会回答您的问题。如果答案是肯定的,你可以认为它已经回答了你的问题,如果答案不是肯定的,那就不用担心了。令人惊讶的是,你在这里已经四年多了,5k代表,这对你来说是个新闻。。。保持冷静,继续。也就是说,普雷斯顿提供的链接可能同样值得一读——它可能无法回答您的问题,但如果您对并行化磁盘I/O没有带来任何性能提升感到惊讶,那么它可能有很多信息可供您学习(毕竟,这就是为什么我们都在这里).这确实让我想知道。。。在我写评论时,我几乎使用了“驱动臂”或“读/写头”等术语,这些术语越来越老化。我想知道正在进行的固态体系结构开发是否不会长期导致设备上出现多个I/O通道。相当于多个CPU核的非易失性存储介质。即使使用SSD,存储仍然是高性能系统中的一个重要瓶颈。但摆脱运动部件的限制确实会降低这种障碍的潜力。@David——你这么说很有趣;我刚从亚马逊订购了一台SSD,希望能缓解这个瓶颈。再次感谢!