私はスレッドと非同期プログラミングについて知っていることすべてが、これは遅すぎるコードで、同期書き込み方法を使用することが可能になることを私に言ったMSDNドキュメント内のXmlWriterのhttp://msdn.microsoft.com/en-us/library/system.xml.xmlwriter.aspxのXmlWriter非同期メソッド
async Task TestWriter(Stream stream)
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Async = true;
using (XmlWriter writer = XmlWriter.Create(stream, settings)) {
await writer.WriteStartElementAsync("pf", "root", "http://ns");
await writer.WriteStartElementAsync(null, "sub", null);
await writer.WriteAttributeStringAsync(null, "att", null, "val");
await writer.WriteStringAsync("text");
await writer.WriteEndElementAsync();
await writer.WriteProcessingInstructionAsync("pName", "pValue");
await writer.WriteCommentAsync("cValue");
await writer.WriteCDataAsync("cdata value");
await writer.WriteEndElementAsync();
await writer.FlushAsync();
}
}
を使用して非同期の例を発見しましたはるかに高速。私はこのコードを修正し、それをテストしました。私は、私が正しいと同期コードは、より速く100Mb以上のファイルで3-4回、ファイル上で8~10回以上速く、私のenvで10mb未満であることがわかった。
私の質問は、このようなコードが使用可能で、妥当なパフォーマンス向上をもたらすシナリオはありますか?
ここに私のテストコードがありますpastebin http://pastebin.com/67EfUbPN –
私は疑うが、ファイルストリームを非同期に開くことはありません。詳細については、[MSDNドキュメント(備考の最初の数段落)](http://msdn.microsoft.com/en-us/library/system.io.filestream.aspx)を参照してください。 –
このストリームのようにFileOptions.Asynchronousを使用しても、str = File.Create(FILE_NAME_A、6140、FileOptions.Asynchronous);それは5-10%だけ遅くなります –