使用Flatbuffer可变会有多少性能损失?

使用 FlatBuffers “拥有”一个应该可编辑的对象/结构(例如游戏状态)是否正确?

在我的示例中,目前我有以下类(class):

class Game:
    std::vector<Player>;
    int frames;

class Player:
    std::string name;
    int oil;
    std::vector<Unit>;

class Unit:
    int id;
    int hp
    ...

对这些对象中的每个对象使用 FlatBuffers 来存储有关每个单元的所有信息是否明智?还是可变的flatbuffer会降低性能?

如果Flatbuffers是错误的工具,应使用哪种技术?

最佳答案

FlatBuffers具有非常有效的标量就地突变,但是就地对 vector 之类的事物进行突变需要使用反射,该反射当前较慢且较笨拙,因此不建议将其用作经常修改的游戏状态。

相反,根据您的情况,我建议使用对象API(--gen-object-api),该API可让您自动与FlatBuffer进行相互转换,并允许您方便地使用标准C++类型进行突变。

07-26 02:41