[英]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.