c# - C# - write to multiple files
问题描述
I am currently using File.WriteAllLines method to create two text files from a string array in a .Net Console Application.
string[] data = {"Apple", "Orange", "Lemon", ...};
File.WriteAllLines("1.txt", data.OrderBy(d=>d));
File.WriteAllLines("2.txt", data.OrderByDescending(d=>d));
The array is huge so it takes some time to create both files. Should I create tasks to improve the performance. Example:
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);
The alternate option is to use WriteAsync method.
What is the best practice around this? Is it worth parallelising file write operation?
解决方案
通常,并行性不适用于 IO 资源。即使是最快的 SSD 也比任何 CPU 都慢。无论您是否生成任务,磁盘都将成为您的瓶颈。但是,你也有磁盘缓存,你有其他进程争夺你的磁盘。
你需要测试。但是,即使它在单个情况下效果更好,也不能保证它会一直这样。
在磁盘上读写时,我个人会避免产生任务。
推荐阅读
- javascript - 大家好!我想知道为什么 psql 终端中出现这个奇怪的错误
- c++ - MultibyteToWideChar 字节边界
- excel - 尝试连接到 SAP 时出现运行时错误“91”
- python - 在 Python SQLite 中执行 INSERT 后表中没有结果
- java - 为什么 Android Studio 会杀死 Intellij Idea java 进程?
- android - Espresso 不会在 SearchView 上执行 typeText ViewAction
- sql - 基于计数使用 HeidiSQL 删除记录
- java - spring boot feign 客户端返回“FileUploadException:请求被拒绝,因为没有找到多部分边界”
- swiftui - 升级到 Xcode 12 后,SwiftUI 列表视图有不同的颜色
- arrays - React .map 仅返回第一项