Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 并行解析xml文件的最快方法是什么?_C#_.net_Multithreading_Performance_Parallel Processing - Fatal编程技术网

C# 并行解析xml文件的最快方法是什么?

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

我需要使用XmlDocument或HAP来解析几个文件,最快的方法是什么?我有一个i7处理器,但无论我使用多少线程,处理器的使用率都不到30%。每个线程解析一个不同的文件。

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()循环来启用任何可枚举的数据源上的数据并行性。