LINUX.ORG.RU

История изменений

Исправление 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 байт на ровном месте.