C#-写入多个文件

时间:2019-02-18 09:20:28

标签: c# .net multithreading file-io task-parallel-library

我当前正在使用File.WriteAllLines方法从.Net控制台应用程序中的字符串数组创建两个文本文件。

 string[] data = {"Apple", "Orange", "Lemon", ...};
 File.WriteAllLines("1.txt", data.OrderBy(d=>d));
 File.WriteAllLines("2.txt", data.OrderByDescending(d=>d));            

该数组很大,因此创建两个文件都需要一些时间。我应该创建任务来提高性能。示例:

var t1 = Task.Factory.StartNew(() => File.WriteAllLines("1.txt", data.OrderBy(d=>d)));
var t2 = Task.Factory.StartNew(() => File.WriteAllLines("2.txt", data.OrderByDescending(d=>d));
Task.WaitAll(t1,t2);

替代选项是使用WriteAsync方法。

这方面的最佳实践是什么?值得并行执行文件写入操作吗?

1 个答案:

答案 0 :(得分:0)

通常,并行处理不适用于IO资源。即使最快的SSD也比任何CPU都慢。无论是否生成任务,磁盘都会成为瓶颈。但是,您还有磁盘缓存,还有其他为磁盘而战的进程。

您需要测试。但是,即使在单个情况下效果更好,也不能保证它总是那样。

在磁盘上读写时,我个人会避免产生任务。