Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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
任何方法都可以提高保存/加载.xml的性能,特别是当.xml文件大时_Xml_Performance_Com_Xml Parsing - Fatal编程技术网

任何方法都可以提高保存/加载.xml的性能,特别是当.xml文件大时

任何方法都可以提高保存/加载.xml的性能,特别是当.xml文件大时,xml,performance,com,xml-parsing,Xml,Performance,Com,Xml Parsing,我们有一个应用程序,所有数据都存储在一个.xml文件中。当用户继续工作时,.xml文件将不断增长,通常会达到10M KB,有时会增长到80M KB。有什么方法可以提高xml文件的保存/加载性能吗 现在,我们正在使用Micorsoft MSXML.Document加载.xml,并使用XPath对其进行操作。 我在想,如果可以将.xml转换成二进制文件,那么加载时可以节省时间?还有其他建议吗?感谢从基于DOM的API(例如使用MSXML时的Msxml2.DOMDocument)切换到基于流的API(

我们有一个应用程序,所有数据都存储在一个.xml文件中。当用户继续工作时,.xml文件将不断增长,通常会达到10M KB,有时会增长到80M KB。有什么方法可以提高xml文件的保存/加载性能吗

现在,我们正在使用Micorsoft MSXML.Document加载.xml,并使用XPath对其进行操作。
我在想,如果可以将.xml转换成二进制文件,那么加载时可以节省时间?还有其他建议吗?感谢

从基于DOM的API(例如使用MSXML时的
Msxml2.DOMDocument
)切换到基于流的API(例如
Msxml2.SAXXMLReader
)将避免解析整个XML文档并将其加载到内存中。它还将避免DOM对象图的高度链接特性(所有这些下一个/上一个/第一个子级/…链接加起来都会带来很大的开销)


然而,这意味着没有XPath和一个非常不同的编程模型。

谢谢您的回答!目前,性能的瓶颈是打开.xml,其他部分是内存中的操作,速度足够快。是的,SAX可以被认为是一种选择,但是重构工作对我来说将是非常大的。我不确定,但猜测是否有类似序列化的技术,我们可以将XML文档持久化到文件中,然后恢复到内存中。也许每次打开原始的.xml文件时,它的性能会更好。:-)再次感谢@ChrisLiu如果您使用Java或.NET,则有很多序列化选项。对于本机代码可能有一些限制(如果您不使用本机代码或遗留代码(VB6),为什么要使用MSXML?),但我个人对此一无所知。你考虑过数据库吗?