Size: a a a

2016 April 15

AS

Andrew Statsenko in Tarantool
class my_data_class {
private:
   int field_1;
   int field_2;
public:
MSGPACK_DEFINE(ffield_1, field_2);

std::unique_ptr<tarantool::srv::box> box;
box.reset(new box(‘space_id’));

my_data_class data;
box->select(…,…, &data);
data->field_2++;
box->update(…, &data)

ну то есть более предметно ориентированной, чтобы не думать где/что распаковывать / упаковывать. все под капот.
источник

RT

Roman Tsisyk in Tarantool
То есть сериализатор из структур в msgpack?
источник

AS

Andrew Statsenko in Tarantool
было бы неплохо ;-)
источник

NZ

Nick Zavaritsky in Tarantool
это очень сложно сделать эффективно
источник

NZ

Nick Zavaritsky in Tarantool
в protobuf например тонны std::string создаются внутрях
источник

AS

Andrew Statsenko in Tarantool
об этом тоже есть сомнения..
источник

NZ

Nick Zavaritsky in Tarantool
нет, ну если только POD и без массивов, это другая история
источник

AS

Andrew Statsenko in Tarantool
то есть реально жалко тратить cpu на “распаковать, filed++, запаковать”. и так по ярду записей..
источник

NZ

Nick Zavaritsky in Tarantool
и какое решение?
источник

NZ

Nick Zavaritsky in Tarantool
чтобы выдернуть поле надо все что перед декодировать
источник

AS

Andrew Statsenko in Tarantool
у меня пока много “белых пятен” в понимании, но видится пара:
- делать удобное и дружелюбное для пользоватей (все под капот нахрен)
- делать быстрое, с кучей вариантов выстрелить себе в ногу, при этом понимать что буду(т) громко и грязно ругаться на отсутствие лаконичности и кучу непредметного кода.
источник

AS

Andrew Statsenko in Tarantool
срепамить бы кусок памяти в slab’e сразу в свою структуру ;-)
источник

NZ

Nick Zavaritsky in Tarantool
msgpack не предоставляет возможности произвольного доступа; надо все декодировать последовательною. пропустить "вложенный" массив тоже нельзя, нужно его полностью декодировать. так как кодировка переменного размера, смещения полей заранее не известны. после апдейта поля, его размер может измениться. даже для int
источник

p

pmwkaa in Tarantool
схемы нехватает
источник

NZ

Nick Zavaritsky in Tarantool
int занимает от одного до 9 байт
источник

AS

Andrew Statsenko in Tarantool
оно там packed ?
источник

NZ

Nick Zavaritsky in Tarantool
угу + big endian
источник

AS

Andrew Statsenko in Tarantool
pmwkaa
схемы нехватает
да. IDL + compiler в любимый язык. такс.. запахло protobuf’ами & gRPC ;-)
источник

EB

Eugene Blikh in Tarantool
Сериализация POD без указателей и подобного это же MP_EXT + memcpy?
источник

EB

Eugene Blikh in Tarantool
С указателями (при условии что храним длину) это MP_EXT + несколько memcpy
источник