我只是想知道使用 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/