1

使用 flatbuffer mutable 会有多少性能损失?

是否“正确”使用平面缓冲区来拥有一个应该是可编辑的对象/结构(即游戏状态)

在我的示例中,我目前有以下课程:

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

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

class Unit:
    int id;
    int hp
    ...

为每个存储有关每个单元的所有信息的对象使用平面缓冲区是否明智?或者可变的 flatbuffer 会降低性能吗?

如果 flatbuffers 对于这项工作来说是错误的工具,应该使用哪种技术?

4

1 回答 1

2

FlatBuffers 对标量进行了非常有效的就地突变,但是就地突变向量之类的东西需要使用反射,目前反射速度较慢且笨拙,因此不建议将其用作经常修改的游戏状态。

相反,在您的情况下,我建议使用对象 API ( --gen-object-api),它可以自动转换为 FlatBuffer 或从 FlatBuffer 转换,并允许您使用标准 C++ 类型进行方便的突变。

于 2017-03-09T18:51:05.823 回答