我在我的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