我在 msdn 文档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 倍,在小于 10mb 的文件上同步代码的速度提高了 8-10 倍以上。
所以我的问题是有没有这样的代码可用并提供合理的性能提升的情况?