添加了 blob 的 FlexBuffer 序列化/反序列化数据大小

FlexBuffer serialised/deserialised data size for blob added

提问人:G.G. 提问时间:3/10/2023 更新时间:3/10/2023 访问量:58

问:

我有一个要求,我需要序列化架构未知的有效负载。有效负载大小以 MB 为单位。 因此,我正在考虑使用 FlexBuffer 来减少网络带宽。

在FlexBuffer中序列化数据后,我如何知道FlexBuffer的大小?

我正在使用 com.google.flatbuffers:flatbuffers-java:23.3.3 库。

  byte[] fileContent = Files.readAllBytes(Path.of("data.txt"));
  ByteBuffer bb = ByteBuffer.wrap(fileContent);

  int beforeSize = smb.array().length;
  System.out.println("before: " + beforeSize); // before: 9085

  FlexBuffersBuilder builder = new FlexBuffersBuilder(FlexBuffersBuilder.BUILDER_FLAG_SHARE_KEYS_AND_STRINGS);
  builder.putBlob(fileContent);
  int afterSize = builder.getBuffer().data().length
  System.out.println("after: " + afterSize); // after: 9087

上述获取序列化数据大小的方法是否正确? 据我了解,afterSize 应该比 beforeSize 小。但是,使用上述方法,我得到几乎相同的大小,即之前:9085 和之后:9087

任何人都可以指导我如何测量创建的 FlexBuffer 的大小,以便我可以确保在通过网络发送之前减小数据大小?

另外,FlexBuffer 是否会使用未知的模式数据来减小大小?

提前非常感谢。

Java FlexBuilder FlatBuffers

评论


答: 暂无答案