【发布时间】:2016-03-02 19:57:10
【问题描述】:
以下两种方法在文件 I/O 方面是否存在性能差异?
- 使用由生产者填充的队列,并在所有数据到达后启动写入磁盘的任务
- 让任务与生产者并行写入磁盘
数据被写入不同的文件和多个目录。 I/O 和 Parallel.ForEach 的单独任务将在这两种情况下使用。
我认为第二个版本的性能会更好,理论上生产者和 I/O 确实是并发的。由于 I/O 会导致调用进程中断,我想知道是否会有不利的一面。这可能会导致开销超过并行性的好处。
在某些情况下我应该支持第一个解决方案而不是第二个解决方案吗?
【问题讨论】:
-
试试看。这是唯一确定的方法。我猜想通常并行化磁盘 IO 可能不会带来显着的好处,因为操作系统已经倾向于在幕后进行大量缓存。
-
双向编写代码,拿出秒表,你就会知道答案。其他一切都在猜测。
标签: c# file io task parallel.foreach