我在我的WP7应用程序中解析一个大的xml文件(1 MB)。该文件是该项目的一部分, ,所以它不通过网络加载。不幸的是,它需要很长的时间。 3秒,到 得到我需要的内容。我已经阅读过,问题在于xml序列化,并且它的 更适合二进制序列化。提高从大型XML字符串反序列化的性能
但我现在有我的XML文件,有没有可能改变我的xml文件的格式或 ,以便解析会更快?我已经在很多地方分割它, 但它并不显着更快。
我在我的WP7应用程序中解析一个大的xml文件(1 MB)。该文件是该项目的一部分, ,所以它不通过网络加载。不幸的是,它需要很长的时间。 3秒,到 得到我需要的内容。我已经阅读过,问题在于xml序列化,并且它的 更适合二进制序列化。提高从大型XML字符串反序列化的性能
但我现在有我的XML文件,有没有可能改变我的xml文件的格式或 ,以便解析会更快?我已经在很多地方分割它, 但它并不显着更快。
1兆字节并不是特别大。
二进制格式将更加紧凑和更快,特别是如果您自己编写而不是使用.net序列化支持,这会增加数据的大量开销。为元素
如果你想坚持使用XML,通常可以显著通过使用简单的,紧凑的格式提高性能例如v而不是vertexentry。
配置文件并优化您的加载代码 - 您可能会发现与xml无关的瓶颈。你可以推迟一些工作,或者在另一个线程上做一些数据转换处理,但是要小心为小增益引入大的复杂性。
最后,尝试不同的方法 - XmlDocument而不是XmlReader或不同的库,或将数据预加载到MemoryStream中。您也可能会在那里找到改进。
或者只是告诉你的老板,那是因为你没有快速的固态硬盘TB级八个核至强... :-)
如果您不需要一次处理所有数据,处理它的一种方法是手动异步加载数据块(您可能需要手动解析数据),并在加载时更新块大小。另外,如果在序列化过程中有任何额外的数据,您可以随时想出您自己的xml模式,这种xml模式不那么冗长,只包含您需要的裸露信息。
你至少有四个选项:
有没有任何“简单”的方法来获得我的XML文件到sql ce数据库? – 2012-01-11 16:08:17
您可以转换xml并将其加载到准备好的模式的数据库,请参阅:http://www.xtremevbtalk.com/showthread.php?t = 194662但这并不容易;) – Pol 2012-01-12 08:24:54
你有异形,看看那里的瓶颈是什么?它是IO,它是CPU等? – RQDQ 2012-01-10 16:49:57
这篇文章将帮助你http://codebetter.com/gregyoung/2008/08/24/fast-serialization/ – Code0987 2012-01-11 11:34:19