我只是想知道并行File.Read使用PLINQ/Parallel可以更快吗?我的代码如下(.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));
}
Run Code Online (Sandbox Code Playgroud)
我问这个的原因是因为我认为文件读取是IO绑定的,所以做并行不会有帮助,我是对的吗?
这取决于.
如果您的文件位于不同的位置,不同的网络共享或不同的物理硬盘驱动器上,那么是的,并行加载可能会有所帮助.如果它们位于单个旋转硬盘驱动器上,并行读取文件可能会显着损害您的性能,因为这些并行读取可能会产生额外的搜索时间.
如果您的文件位于SSD上,您的性能可能略低,但这取决于您并行读取的文件数量以及它们的大小.我想,在某个文件大小阈值和并行读取数量下,性能将显着下降.没有一些实验,很难说出那个.