簡體   English   中英

在Java中,什么更昂貴? 序列化還是寫入文件?

[英]What Is More Expensive In Java? Serialization or Writing To a File?

我有一個需要在本地存儲的字符串列表(假設該列表可以在10到100個項目之間運行)。 我想知道是否應該將列表寫入Flat數據庫或使用序列化來展平包含列表的對象? 哪個更昂貴(CPU方式)? 是什么條件使一個價格比另一個價格昂貴?

謝謝!!

特別是由於它們是字符串,因此只需將它們每行寫出一個文件即可。 簡單,快速且易於測試。

我不確定這筆費用是多少,但是我相信,由於對象表示多次包含全部元數據(和結構),這可能會導致創建比原始預期數據大的大對象。 例如 ,當您將xml結構存儲在DOM對象中時,它在內存中的大小大約是原始數據的4倍。

基於以上所述,我認為序列化為對象可能會更昂貴。 您可能還需要考慮最終產品的消耗量。 如果要使生成的文件對人類可讀,則必須序列化String數據以提高可讀性。

我有一個需要在本地存儲的字符串列表(假設該列表可以在10到100個項目之間運行)。

假設字符串的總長度很小(例如,小於10K),則使用序列化或平面文件進行保存的用戶空間CPU時間可能為幾毫秒。 換句話說,它是如此之快以至於用戶不會注意到差異。

您應該查看在兩種選擇(和其他選擇)之間進行選擇的其他原因:

  • 編寫代碼有多容易。

  • 替代項引入了多少個額外的依賴項。

  • 人類可讀性/已保存數據文件的可編輯性...以防萬一。

  • 如果需要,更改保存到文件的內容的“模式”將是多么容易/困難。

  • 是否可以在不重寫整個文件的情況下更新一個字符串...如果相關的話。

  • 支持其他內容,例如原子更新,事務,復雜查詢等(如果相關)。


而且, 盡管我在上面說了什么但是您仍然想知道哪種會更快(以及提高多少),那么請對其進行基准測試。 實際效果取決於您尚未指定的因素。

這是有關如何編寫Java基准測試以使其產生有意義結果的幾個重要參考。

您可以嘗試回答問題的這一部分:

是什么條件使一個價格比另一個價格昂貴?

(往上看)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM