c# - 并行文件读取是否比顺序读取更快?

标签 c# file-io

我只是想知道使用 PLINQ/Parallel 的并行 File.Read 会更快吗?我的代码如下(.Net 4.0):

public static void ReadFileParallel(List<string> fileName)
{
   Parallel.Foreach(fileName, file=>File.Read(file));
}

public static void ReadFilePLINQ(List<string> fileName)
{
    fileName.AsParallel().foreach(file=>File.Read(file));
}

我问这个的原因是因为我认为文件读取是 IO 绑定(bind)的,所以并行不会有帮助,对吗?

最佳答案

视情况而定。

如果您的文件位于不同的位置、不同的网络共享或不同的物理硬盘驱动器上,那么是的,并行加载可能会有所帮助。如果它们位于单个旋转硬盘驱动器上,并行读取文件可能会显着损害您的性能,因为这些并行读取可能会产生额外的寻道时间。

如果您的文件位于 SSD 上,您的性能可能会略有下降,但这取决于您并行读取的文件数量及其大小。我想在一定的文件大小阈值和并行读取数量下,性能会显着下降。没有一些实验很难说。

关于c# - 并行文件读取是否比顺序读取更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3237926/

相关文章:

c# - 在 Azure 中检索聊天机器人对话数据

c# - 如何使用按位&(和)来实现这个?

c - 无法创建新文件

java - Drools 文件未找到异常

c++ - 从文件读取输入打印出奇怪的符号

c# - 使用 Identity 2.x 在 MVC5 中迁移匿名用户

c# - 在鼠标位置实例化对象

c# - Asp.net core默认路由

c - 从文件读取到数组 - C

c - 正在清除文本文件