我有一个使用 xsd 方案将数据导出为 xml 文件的应用程序。
它会创建很多小文件。29Gb,其中文件的平均大小为 0.3MB 或 10KB。它创建了大约 140000 个文件。它用
Enumerable.Range(1, gs.Count)
.AsParallel()
.ForAll
将独立数据保存到文件
使用 MS Profiler,我将执行时间减少到 30 分钟。它在峰值时写入高达 20Mb/s。
因此,顶级分析器结果的最终版本包含:
System.IO.File.Open(string,valuetype System.IO.FileMode) 30,14 %
System.IDisposable.Dispose() 22,09%
System.Xml.Serialization.XmlSerializer.Serialize(class System.IO.Stream,object) 13,42 %
代码是:
using (Stream streamw = File.Open(fileName, FileMode.Create))
{
formatter.Serialize(streamw, this);
}
其中格式化程序是:
static XmlSerializer formatter = new XmlSerializer(typeof(XItemDesc));
所以问题是:
1) 分析器的结果是否意味着我已达到 HDD 性能的最大值?
2)在第二行有 Dispose 是预期的行为吗?