C# 并行解析xml文件的最快方法是什么?
我需要使用XmlDocument或HAP来解析几个文件,最快的方法是什么?我有一个i7处理器,但无论我使用多少线程,处理器的使用率都不到30%。每个线程解析一个不同的文件。C# 并行解析xml文件的最快方法是什么?,c#,.net,multithreading,performance,parallel-processing,C#,.net,Multithreading,Performance,Parallel Processing,我需要使用XmlDocument或HAP来解析几个文件,最快的方法是什么?我有一个i7处理器,但无论我使用多少线程,处理器的使用率都不到30%。每个线程解析一个不同的文件。System.Xml.Linq.XElement.Parse()解析Xml字符串的速度比XmlDocument.LoadXml()快,而XElement.Load()将直接从文件解析。您还可能会发现LINQtoXML更易于使用 但是如果您想使用XmlDocument,那么可以使用 XmlDocument xml = new X
System.Xml.Linq.XElement.Parse()
解析Xml字符串的速度比XmlDocument.LoadXml()
快,而XElement.Load()将直接从文件解析。您还可能会发现LINQtoXML更易于使用
但是如果您想使用XmlDocument,那么可以使用
XmlDocument xml = new XmlDocument();
xml.LoadXml(XElement.Load(someFileName).ToString(SaveOptions.DisableFormatting));
正如其他人所建议的,您可能不会达到100%的CPU利用率,因为i7解析数据的速度可能比硬盘发送数据的速度快得多。速度是否会受到硬盘驱动器的限制?您的XML有多大?尝试在RAMdisk上存储xml(只是为了测试解析速度)是的,您的读取速度可能是这里的瓶颈。如果可以的话,请先将它们加载到内存中。@yamen:OP显然是在不同的线程上读取它们的,正如文章中所述……有多少xml文件?您是否正确缓冲输入?有多少内核/线程?(有些是2/4)。我有i7 4核4超线程。我正在正确地缓冲。使用线程池来克服线程创建和处理开销。考虑使用任务并行库和并行.For()循环来启用任何可枚举的数据源上的数据并行性。