Serialization 未使用flatbuffer减小序列化数据的大小

Serialization 未使用flatbuffer减小序列化数据的大小,serialization,flatbuffers,Serialization,Flatbuffers,我写了以下fbs文件 名称空间测试 table polygon { x : double; y : double; } table layer { layer_name : string; polygons : [polygon]; } root_type layer; 我的计划是序列化大约500万个坐标并将其转储到一个文件中。问题是我看到的是,与我预期的相比,字节数增加了。我希望它应该是大约500万(5米*16)字节。但我得到的大小是14000032字

我写了以下fbs文件

名称空间测试

table polygon {
    x : double;
    y  : double;

}

table layer {
    layer_name : string;
    polygons : [polygon];
}

root_type layer;
我的计划是序列化大约500万个坐标并将其转储到一个文件中。问题是我看到的是,与我预期的相比,字节数增加了。我希望它应该是大约500万(5米*16)字节。但我得到的大小是14000032字节

下面是我用来将序列化数据转储到文件中的java代码

FlatBufferBuilder fbb = new FlatBufferBuilder(0);
    String s = "Product1";
    int str = fbb.createString("layer1");
    int size = 1 * 5 * 1000000;
    int[] offset = new int[size];
    int cur = 0;

    for (double i = 0; i < size; i++) {

        fbb.startTable(2);
        polygon.addX(fbb, i);
        polygon.addY(fbb, i);
        offset[cur++] = polygon.endpolygon(fbb);
    }

    int arrayoffset = layer.createPolygonsVector(fbb, offset);
    layer.startlayer(fbb);

    layer.addLayerName(fbb, str);

    layer.addPolygons(fbb, arrayoffset);
    int bla = layer.endlayer(fbb);

    fbb.finish(bla);
    ByteBuffer bf = fbb.dataBuffer().duplicate();

    File myfile = new File("/tmp/test.dat");

    try {
        FileChannel channel = new FileOutputStream(myfile).getChannel();
        channel.write(bf);
        channel.close();

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
FlatBufferBuilder fbb=新的FlatBufferBuilder(0);
字符串s=“Product1”;
int str=fbb.createString(“layer1”);
整数大小=1*5*1000000;
int[]偏移量=新的int[大小];
int cur=0;
用于(双i=0;i

如果我在这里做错了什么,请告诉我

表格多边形
更改为
结构多边形
<代码>表
是可扩展的,每个元素都有一些固定的开销,并且也由偏移量上的向量引用。
struct
是不可扩展的(对于xy对来说这似乎很好),必须内联序列化(请参见教程中的示例),并将提供您期望的大小