История изменений
Исправление KivApple, (текущая версия) :
struct Vec3 {
x: float;
y: float;
z: float;
}
struct ClientMessage_UpdatePosition {
position: Vec3;
yaw: float;
pitch: float;
}
union ClientMessageData {
ClientMessage_UpdatePosition // To be added more messages
}
table ClientMessage {
data: ClientMessageData;
}
Вот такая вот штука после сериализации FlatBuffers занимает 44 байта, хотя должна занимать 5 * sizeof(float) + enum для выбора типа сообщения = 24 байта (это если enum int, хотя это оверкилл и можно использовать числовой тип поменьше).
То есть оверхед 20 байт (почти 2 раза) на ровном месте.
Исправление KivApple, :
struct Vec3 {
x: float;
y: float;
z: float;
}
struct ClientMessage_UpdatePosition {
position: Vec3;
yaw: float;
pitch: float;
}
union ClientMessageData {
ClientMessage_UpdatePosition // To be added more messages
}
table ClientMessage {
data: ClientMessageData;
}
Вот такая вот штука после сериализации FlatBuffers занимает 44 байта, хотя должна занимать 5 * sizeof(float) + enum для выбора типа сообщения = 24 байта (это если enum int, хотя это оверкилл и можно использовать числовой тип поменьше).
То есть оверхед 20 байт на ровном месте.
Исходная версия KivApple, :
struct Vec3 {
x: float;
y: float;
z: float;
}
struct ClientMessage_UpdatePosition {
position: Vec3;
yaw: float;
pitch: float;
}
union ClientMessageData {
ClientMessage_UpdatePosition // To be added more messages
}
table ClientMessage {
data: ClientMessageData;
}
Вот такая вот штука после сериализации FlatBuffers занимает 44 байта, хотя должна занимать 5 * sizeof(float) + enum для выбора типа сообщения = 24 байта (это если enum int, хотя это оверкилл).
То есть оверхед 20 байт на ровном месте.