xsd スキームを使用してデータを xml ファイルとしてエクスポートするアプリがあります。
小さなファイルがたくさん作成されます。ファイルの平均サイズが 0.3MB または 10KB の 29Gb。約140000個のファイルを作成します。それは使用しています
Enumerable.Range(1, gs.Count)
.AsParallel()
.ForAll
独立したデータをファイルに保存する
MS プロファイラーを使用すると、実行時間が 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) 2 行目に Dispose を配置するのは意図した動作ですか?