2010-12-05 391 views
1

性能更快,更好?閱讀XML與閱讀CSV文件java

使用DocumentBuilder或CSV與FileReader/BufferReader在Java中讀取XML?

+5

這是一個非常廣泛的問題 - 答案取決於許多因素,例如文檔的大小和您嘗試執行的處理類型。你能否提供更多關於你想解決什麼問題的細節? – 2010-12-05 15:03:44

回答

1

我同意這兩個錯誤和duffymo。我只是想添加以下內容。

因爲它已經說過,兩者都是數據格式,所以想想你的數據。它有多大和多複雜?如果它是分層的,忘記CSV。如果它不是很大,那麼也一樣。

關於XML的思考請記住,DOM不是解析它的唯一方法。 SAX速度更快。您可以使用Digester(建立在SAX之上),允許您使用XML定義數據模型和XML模式之間的映射,然後運行速度非常快。

如果你的數據非常大,你的解析器必須非常快速地檢查JSON。它應該比XML更快,因爲它不那麼冗長。

1

我不知道性能,但其中一個因素是易於找到標準的,使用得很好的解析器。現在有一個內置於JDK的XML解析器,但我不知道有一個CSV解析器。我認爲XML遠比CSV更普遍。

另一個因素是數據的性質:XML建議使用層次結構,而CSV建議使用表格。我認爲讀取數據的「最佳」方式更多依賴於這樣的事情。

1

雖然我不能說更快的構建和易於維護,也不能表現;儘管我猜這取決於你如何使用被解析的文檔;例如讀取文檔節點的速度會比csv快,因此在CSV中加載文檔可能會更快。所有這一切說,CSV是邪惡的,這意味着它是非常不穩定的數據存儲。 XML有更多的開銷,但方式更穩定。

RELATED_QUESTION:When and Why is XML preferable to CSV?

1

讀一個CSV文件與FileReader類是更快請讀者僅讀取文件和值的分析這裏是一個非常簡單的步驟。

另一方面,使用DOMReaderSAXParser(您不會使用構建器類讀取文檔,據我所知,它用於創建XML文檔)的XML文件讀取速度較慢,因爲處理XML數據是一個更復雜的步驟。 XML文件往往非常冗長。

XML文件的優勢在於,您可以對數據驗證(使用XSD進行XML結構定義時)施加更多壓力,即在讀取文件時測試值的正確性。也可以在沒有任何進一步解釋的情況下編輯XML文件,因爲XML元素名稱(和可能的註釋)在CSV文件中說的不僅僅是分號。

1

我一直在想。我只是做了一個粗略的測試,使用Excel來讀取和解析一個簡單的文件,其中有8,000條記錄。 XML負載耗時約8秒。 CSV加載時間不到1秒。

我認爲CSV對於簡單的表格數據來說是一個非常有效的選擇,並且攜帶了很少的整體感染。對於更復雜的場景,XML非常棒......