1

我用 flatbuffer 表示我的数据。目前我有一个问题,我将平面缓冲区中的一大堆对象分成一些小块。

直接的方法是为每个部分创建一个 flatbuffer 构建器,然后将对象写入该构建器。但是当object有点复杂的时候,逐个struct来复制data struct是一件相当繁琐的工作。

由于 flatbuffer 存储相对偏移量,理论上我认为可以简单地复制字节缓冲区来将对象复制到另一个 flatbuffer 实例中。是否已经有可以深拷贝的东西了?我现在正在使用java。谢谢

谢谢

4

1 回答 1

1

这比您想象的要复杂,因为表及其子表在内存中不一定是连续的,并且可能与其他表共享 vtable 等。

最简单的方法是使用嵌套的 FlatBuffers(将子对象粘贴到字节向量中),因为它可以轻松复制。

C++中有一个使用反射的深拷贝功能,但速度慢,需要二进制模式文件,还没有移植到Java。新的“迷你反射”表将适用于深拷贝,但到目前为止也是 C++。

于 2017-11-22T16:16:23.617 回答