Java中的协议缓冲区:我们可以有效地处理原始数组吗?

时间:2016-01-29 17:20:32

标签: java protocol-buffers

我使用包含一些属性和一千个浮点值(double [])的数组的消息。使用协议缓冲区序列化消息时,感谢" packed = true"指令,双值被对齐并紧凑地存储在消息中。

但默认情况下,为该消息生成的Java类将double数组表示为数组列表(!),将原始double值赋值为对象,将这些对象分散到内存中,而最后我需要double []表示进一步的汇总......

是否可以选择生成将重复的原始值作为Java原始数组处理的类?

2 个答案:

答案 0 :(得分:0)

正如所解释的here所需要的是存储未装箱值的ArrayList版本。由于java泛型仅适用于对象(盒装类型),因此每种基本类型都需要实现。所以你可以使用Apache Commons Primitives提供的那个。

答案 1 :(得分:0)

在几个地方讨论这个主题之后,答案是明确的

使用协议缓冲区,数字向量的二进制表示是有效的。但是目前Java实现无法有效地反序列化这些向量(而不是原始数组,而是获得盒装数字的集合......)