C# - 写入多个文件
C# - write to multiple files
我目前正在使用 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 方法。
这方面的最佳做法是什么?是否值得并行化文件写入操作?
一般来说,并行性不能很好地处理 IO 资源。即使是最快的 SSD 也比任何 CPU 都慢。无论您是否生成任务,磁盘都将成为您的瓶颈。但是,你也有磁盘缓存,你有其他进程在争夺你的磁盘。
你需要测试。但是,即使它在单个情况下效果更好,也不能保证它会一直这样。
说到磁盘读写,我个人会尽量避免生成任务。
我目前正在使用 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 方法。
这方面的最佳做法是什么?是否值得并行化文件写入操作?
一般来说,并行性不能很好地处理 IO 资源。即使是最快的 SSD 也比任何 CPU 都慢。无论您是否生成任务,磁盘都将成为您的瓶颈。但是,你也有磁盘缓存,你有其他进程在争夺你的磁盘。
你需要测试。但是,即使它在单个情况下效果更好,也不能保证它会一直这样。
说到磁盘读写,我个人会尽量避免生成任务。