2012-04-26 173 views
2

我遇到了性能問題XDocument.Load("large_file.xml"),加載該文件需要大約25秒。將XML文檔轉換爲二進制文件意味着什麼?

我在this question中讀到,使用二進制格式可以提供高達10倍的性能提升。

二進制格式是什麼樣的?你如何將XML文件轉換爲它?

+1

參考鏈接問題中的註釋:建議的二進制格式是您必須自己創建的。 – 2012-04-26 07:43:33

+0

是否只是明文組織,但我認爲合適? – Louis 2012-04-26 07:49:04

+2

二進制文件不是純文本。評論的要點是XML> JSON>二進制。二進制是12345號不存儲在包含字符「12345」但在兩個字節「0x39 0x30」(假設您使用一個小小的16位二進制存儲字)的文本行中的格式。決定如何以二進制格式存儲值完全取決於您,如果您的數據很複雜,這可能是不平凡的。 – 2012-04-26 08:07:09

回答

4

讓我們先從隱含問題:

問:什麼是二進制格式?答:這是一種數據以非文本形式表示的格式。例如,Java int可能會被表示爲4個字節,而不是一串十進制數字和符號。

問:它看起來像什麼?

答:如果您使用文本編輯器/查看器查看它,它看起來像垃圾。

問:如何將XML文件轉換爲二進制格式?

答:手工。由於二進制格式本質上是一種非文本格式(任何格式),因此不存在將其轉換的神奇方法。

問:如何以及爲什麼二進制格式更快?

答:二進制格式不會自動加載得比XML(或JSON)快。這個想法是,你(程序員)設計你的應用程序的一個特定的二進制格式,即將更快地加載到。使用需要較少的CPU的努力變成在 - 數據編碼

  • 避免冗長/重複結構中包含的信息(例如,XML標籤和屬性的名稱),
  • :您通常這樣做是通過這樣的事情內存中表示,
  • 避免不必要的元數據的包容,
  • 避免了需要額外的內存數據複製的東西,
  • 等。
3

XML格式有很多信息。所以它很大而且很慢。您可以創建自己的格式。

例如:

<Data>Value</Data>可以在一個二進制文件進行更改,只是value一個具體的地址。