我当前正在使用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方法。
这方面的最佳实践是什么?值得并行执行文件写入操作吗?
答案 0 :(得分:0)
通常,并行处理不适用于IO资源。即使最快的SSD也比任何CPU都慢。无论是否生成任务,磁盘都会成为瓶颈。但是,您还有磁盘缓存,还有其他为磁盘而战的进程。
您需要测试。但是,即使在单个情况下效果更好,也不能保证它总是那样。
在磁盘上读写时,我个人会避免产生任务。