我試圖通過從Serializable接口切換到Externalizable來改善我們當前的序列化性能,但沒有找到關於創建自定義和高性能序列化的最佳實踐的大量文檔。我目前的解決方案速度是Java序列化庫存的兩倍,雖然不錯,但看起來並不像我期待的那麼大的改進(Benchmark of serialization techniques/libraries)Java自定義序列化最佳實踐
對於除原語之外的任何事情,我採取了寫0或1顯示的字段存在,然後讀取字段,如果值是1:
if (in.read() == 1) {
name = in.readUTF();
}
關於是否正確的聲音?是否有更好的編碼使用?地圖,列表和其他複雜的數據結構如何? Enums的默認序列化是否正確?
謝謝。
該計劃實際上是評估一些可能的方式,並根據性能和可維護性查看我們最喜歡哪一種。我們不需要其中許多提供的跨語言支持,所以自定義Java代碼看起來像是一種可能性。 – Gandalf 2012-04-20 16:44:42