可变平面缓冲区,性能损失?
Mutable Flatbuffers, Performance loss?
使用 flatbuffer mutable 有多少性能损失?
是否 "correct" 使用平面缓冲区来获得 object/stuct 应该是可编辑的(即游戏状态)
在我的示例中,我目前有以下 类:
class Game:
std::vector<Player>;
int frames;
class Player:
std::string name;
int oil;
std::vector<Unit>;
class Unit:
int id;
int hp
...
为每个存储有关每个单元的所有信息的对象使用平面缓冲区是否明智?或者可变的平面缓冲区会降低性能吗?
如果平面缓冲区不是这项工作的错误工具,应该使用哪种技术?
FlatBuffers 具有非常高效的标量就地变异,但是就地变异向量之类的东西需要使用反射,目前反射速度较慢且笨拙,因此不建议用作经常修改的游戏状态。
相反,在你的情况下,我建议使用对象 API (--gen-object-api
),它可以自动转换 to/from 一个 FlatBuffer 并允许你使用标准 C++ 方便地进行突变类型。
使用 flatbuffer mutable 有多少性能损失?
是否 "correct" 使用平面缓冲区来获得 object/stuct 应该是可编辑的(即游戏状态)
在我的示例中,我目前有以下 类:
class Game:
std::vector<Player>;
int frames;
class Player:
std::string name;
int oil;
std::vector<Unit>;
class Unit:
int id;
int hp
...
为每个存储有关每个单元的所有信息的对象使用平面缓冲区是否明智?或者可变的平面缓冲区会降低性能吗?
如果平面缓冲区不是这项工作的错误工具,应该使用哪种技术?
FlatBuffers 具有非常高效的标量就地变异,但是就地变异向量之类的东西需要使用反射,目前反射速度较慢且笨拙,因此不建议用作经常修改的游戏状态。
相反,在你的情况下,我建议使用对象 API (--gen-object-api
),它可以自动转换 to/from 一个 FlatBuffer 并允许你使用标准 C++ 方便地进行突变类型。