在直接缓冲区中写入对象的最快方法是什么?

时间:2016-09-02 17:39:04

标签: java serialization nio openmpi

我需要将序列化对象写入ByteBuffer。没有开销复制和中间转换的最快方法是什么?

我需要通过openmpi-java传输一个大对象(超过2GB),这可能只使用直接缓冲区,我想把提出的想法作为基础。

2 个答案:

答案 0 :(得分:0)

我所做的是创建一个包装ByteBuffer的OutputStream。将OutputStream传递给您喜欢的序列化工具。我有一个支持这个的ByteBuffer的替代品,但它很容易添加。

BTW几乎所有序列化库都比标准Java序列化更快。

答案 1 :(得分:0)

概念上;只有JVM本身可以直接访问构成对象的内存中的字节。因此,无论您选择何种类型的序列化工具,都必须进行一定数量的转换和复制

因为您实际上要求获取对象的字段,并且根据元信息,其内容复制到某些字节中。如果没有复制/转换,这根本行不通。

除了;我想知道你是否在看这里的“正确”问题。序列化本身就是一项代价高昂的操作。有很多方法可以做到;它们有着截然不同的特性。

我所说的是:你确定你应该担心表现吗?或许,您花了更多时间考虑使用这种或那种序列化技术的长期后果。或(对象)序列化对象涉及的安全风险?

长话短说:是什么让你认为表现是一个问题?