Я написал следующий файл fbs
тестирование пространства имен;
table polygon {
x : double;
y : double;
}
table layer {
layer_name : string;
polygons : [polygon];
}
root_type layer;
Мой план состоит в том, чтобы сериализовать около 5 миллионов координат и поместить их в один файл. Проблема в том, что я вижу, что количество байтов увеличено по сравнению с тем, что я ожидал. Я ожидаю, что это должно быть arounf (5M * 16) байтов. Но размер, который я получаю, составляет 140000032 байта
Вот код 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();
}
Пожалуйста, дайте мне знать, если я я делаю что-то здесь не так