Hazelcast序列化嵌套对象

时间:2016-06-16 20:16:50

标签: java performance serialization hazelcast

您好我对最新的Hazecast版本和序列化有一个问题。让我们有以下类:

class Customer implements DataSerializeable {
    List<Address> adresses;
    CustomerDetails details;
}

Address和CustomerDetails这两个类都实现了DataSerializeable。我们目前将它们序列化的方式是:

public void writeData(ObjectDataOutput out) throws IOException {
   out.writeObject(address);
   out.writeObject(details);
}

在网上的一些例子中,我看到他们序列化同一个类的方式是:

public void writeData(ObjectDataOutput out) throws IOException {
   address.writeData(out);
   short size = details.size();
   out.writeShort(size);
   for (CustomerDetail detail: details) {
      detail.writeData(out);
   }

}

我对几百万个记录进行了一些性能测试我无法观察到性能上的显着差异。

建议的嵌套对象序列化方法是什么?关于最新的Hazelcast版本3.6,有人可以发表评论。

谢谢

1 个答案:

答案 0 :(得分:2)

现在没有明显的区别,因为我们已经为ArrayList,LinkedList和HashMap优化了序列化器。这样你就可以获得与手写相同的好处。

可以在此处找到ArrayList序列化程序类:https://github.com/hazelcast/hazelcast/blob/master/hazelcast/src/main/java/com/hazelcast/internal/serialization/impl/ArrayListStreamSerializer.java

查看您将看到的代码,它将为您提供几乎相同的好处。