缓冲区大小每次增加
buffer size every increasing
我正在使用平面缓冲区处理对象流,我是否应该在每次完成创建对象时调用 FlatBufferBuilder::Clear
?我的代码是这样的:
FlatBufferBuild fbb;
while (true) {
Foo foo;
RecvFooFromNetwork(&foo);
FooObject = CreateFooObjectDirect(fbb, foo.x, foo.y, ...);
SaveToDisk(fbb.GetBufferPointer(), fbb.GetSize());
// <-- Should I call fbb.Clear() here?
}
我观察到 fbb.GetSize()
是每次增加,即使 Foo
的大小应该是恒定的。这正常吗?
是的,您回答了自己的问题,您需要调用 Clear()
(最有效)或将 fbb
的声明移到循环内。当你完成一个缓冲区时,它会留在构建器中。在您调用 Finish()
之后,可能会有一个用于创建更多数据的断言,也许会在 github?
上打开一个问题
我正在使用平面缓冲区处理对象流,我是否应该在每次完成创建对象时调用 FlatBufferBuilder::Clear
?我的代码是这样的:
FlatBufferBuild fbb;
while (true) {
Foo foo;
RecvFooFromNetwork(&foo);
FooObject = CreateFooObjectDirect(fbb, foo.x, foo.y, ...);
SaveToDisk(fbb.GetBufferPointer(), fbb.GetSize());
// <-- Should I call fbb.Clear() here?
}
我观察到 fbb.GetSize()
是每次增加,即使 Foo
的大小应该是恒定的。这正常吗?
是的,您回答了自己的问题,您需要调用 Clear()
(最有效)或将 fbb
的声明移到循环内。当你完成一个缓冲区时,它会留在构建器中。在您调用 Finish()
之后,可能会有一个用于创建更多数据的断言,也许会在 github?