[英]reading/writing a set to a .ser file compared to a .txt file in java
所以我有了這個Java程序,此刻它序列化了我的set對象並將其保存到.ser文件中
FileOutputStream fileOut = new FileOutputStream("hash.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(mySet);
out.close();
fileOut.close();
System.out.printf("Serialized data is saved in hash.ser");
程序每次在程序啟動時也會從.ser文件讀取。 我只是很好奇,是否有人可以解釋兩種速度的差異,以及從txt文件與.ser文件進行讀取/加載之間的一般速度。 因為我不是100%肯定像我一樣讀/寫.ser文件實際上更快。 仔細研究了一下,真的找不到太多。 任何幫助將是巨大的,謝謝。
將Java序列化與“ txt”文件進行比較是不可能的,因為可以用許多不同的方式創建和讀取文本文件。 例如,您可以將XML或JSON或您自己的自定義文本格式寫入文本文件。 這些都有很大的不同,它們的性能和其他特征可能會有很大的不同。
Java序列化在許多情況下都可以很方便,但是也有很多限制和其他考慮因素會使事情變得非常復雜。
ArrayList
, HashSet
等)都可以序列化。 如果包含無法序列化的內容,則必須聲明它為transient
並在反序列化時解決它的缺失,或者必須創建自定義序列化格式。 這增加了復雜性。 obj1
和obj2
,它們每個都有對相同對象obj3
的引用。 對該結構進行序列化和反序列化將保留此關系,因此之后obj1
和obj2
都指向同一obj3
實例。 其他序列化機制可能無法做到這一點,最終您會得到一些指向obj3
副本的obj3
。 serialVersionUID
,但是例如,如果添加或刪除了序列化的字段,則可能必須處理此類的演變。 同樣,這增加了復雜性。 至於性能,建議您嘗試一下,看看它的性能是否可以接受。 它可能比替代方案更快或更慢,但是您實際上必須實現這些替代方案並對其進行基准測試,並將結果與Java序列化進行比較。
我假設您正在問序列化和文件IO之間的區別,以將對象狀態寫入文件。
串行化的主要用途是像RMI中一樣通過網絡將對象狀態發送到另一個VM。 在生產代碼中很少使用序列化將對象狀態寫入文件。
如果使用文件IO將對象狀態寫入文件,則必須手動注意將所有字段(包括瞬態字段)寫入文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.