我有一個我需要在本地存儲的字符串列表(假設列表可以在10個項目到100個項目之間運行)。我想知道是否應該將列表寫入Flat數據庫或使用Serialization將包含列表的對象展平?哪個更昂貴(CPU方面)?有什麼條件使一個比另一個更昂貴?在Java中什麼更昂貴?序列化或寫入文件?
謝謝!
我有一個我需要在本地存儲的字符串列表(假設列表可以在10個項目到100個項目之間運行)。我想知道是否應該將列表寫入Flat數據庫或使用Serialization將包含列表的對象展平?哪個更昂貴(CPU方面)?有什麼條件使一個比另一個更昂貴?在Java中什麼更昂貴?序列化或寫入文件?
謝謝!
我有我需要在本地存儲的字符串列表(假設列表可以在10個項目之間運行到100個項目)。
假設串的總長度小(例如,小於10K),用於執行保存在用戶空間的CPU時間很可能是使用任一序列或平面文件幾毫秒。換句話說,用戶不會注意到其中的差異。
你應該看其他原因兩個選擇(和其他人)之間進行選擇:
有多容易寫代碼。
很多額外的依賴關係如何在保存的數據文件。
易讀/可編輯的替代拉...如果你需要做到這一點。
如果您需要更改保存到文件中的內容的「架構」,這將會變得多麼容易/困難。
是否可以在不重寫整個文件的情況下更新一個字符串......如果這是相關的。
支持其他事情,如原子更新,交易,複雜的查詢等...如果這些是相關的。
如果,儘管上面我說,你還是想知道,這將是更快(多少),那麼基準它。真實世界的表現將取決於您未指定的因素。
以下是關於如何編寫Java基準以提供有意義的結果的幾個重要參考。
而且你可以嘗試回答你的問題,這部分:
什麼是讓比一個更昂貴的條件其他?
(見上文)
我不確定費用,但我相信因爲對象表示很多次都包含大量元數據(和結構),這可能導致創建比原始預期數據大的大對象大小。 示例對此可能是當您在DOM對象中存儲xml結構時 - 內存大小比原始數據大約大4倍。
基於上述,我認爲序列化作爲一個對象可能會更昂貴。您可能還想考慮最終產品的消耗。如果你想要生成的文件是人類可讀的,你將不得不序列化字符串數據的可讀性。
尤其是因爲它們是字符串,只需將它們每行寫入一個文件即可。簡單,快速,而且更容易測試。
爲什麼不嘗試一下和標杆? – 2011-12-31 21:28:59
更好,爲什麼不看其他要求,看看最適合他們的東西?這兩種選擇傾向於在不同的情況下使用......如果與合作是一種痛苦,誰會關心什麼更快? – cHao 2011-12-31 21:32:35
如果你只寫了10-100個字符串,你甚至可能看不到任何區別。你爲什麼如此關心這樣一個小數據集的性能?如果不符合您的要求,請使用最簡單的解決方案並進行更改。 – milan 2011-12-31 22:18:31