Сообщение Re[5]: YAS: Yet Another Serialization от 26.10.2016 20:43
Изменено 26.10.2016 20:45 niXman
спасибо PM за поддержку по моей просьбе. коммит приняли.
сравнительные результаты:

сейчас проделано следующее:
1. почищен код, пофикшены ворнинги, убраны олд-стайл-касты и всякая фигня вроде '&str[0]'.
2. выброшена изрядная часть кода.
3. добавлены лимиты.
4. повышена производительность.
5. добавлен компактный(без использования varint) тип бинарных архивов(зовется yas_compact). (гораздо более быстрый, чем при использовании varint, но экономия в размере ниже)
6. в процессе реализация компактных архивов с использованием varint. (гораздо более медленный чем yas_compact, но экономия в размере выше)
7. добавлен новый тип архивов — object. это почти как json, но намного производительнее, и с некоторыми отличиями от json.
пример создания сложного, вложенного объекта:
будет сгенерен такой объект:
в форматированом виде:
этот тип архива будет зваться yas_object.
от json отличается тем, что верхний уровень всегда объект, т.е. {}. верхний уровень не может быть массивом или значением.
скорость сериализации во много раз выше.
более подробно расскажу позже.
это подготовка к json архивам в составе YAS.
все это пока что у меня локально. недели через две вылью в паблик.
сравнительные результаты:

сейчас проделано следующее:
1. почищен код, пофикшены ворнинги, убраны олд-стайл-касты и всякая фигня вроде '&str[0]'.
2. выброшена изрядная часть кода.
3. добавлены лимиты.
4. повышена производительность.
5. добавлен компактный(без использования varint) тип бинарных архивов(зовется yas_compact). (гораздо более быстрый, чем при использовании varint, но экономия в размере ниже)
6. в процессе реализация компактных архивов с использованием varint. (гораздо более медленный чем yas_compact, но экономия в размере выше)
7. добавлен новый тип архивов — object. это почти как json, но намного производительнее, и с некоторыми отличиями от json.
пример создания сложного, вложенного объекта:
int v0=33;
bool v1=false;
double v2=3.14;
bool v3=true;
int v4=44;
int v5=55;
auto o0 = YAS_OBJECT("object-0", v0, v1, v2);
auto o1 = YAS_OBJECT("object-1", v3, v4, o0, v5);
auto o2 = YAS_OBJECT("object-2", 5, 6, o1, true);
auto o3 = YAS_OBJECT("object-3", 1, 2, o2, 3, 4, false);
yas::mem_ostream os;
yas::json_oarchive<yas::mem_ostream> oa(os);
oa & o3;
будет сгенерен такой объект:
{"1":1,"2":2,"o2":{"5":5,"6":6,"o1":{"v3":true,"v4":44,"o0":{"v0":33,"v1":false,"v2":3.14000000},"v5":55},"true":true},"3":3,"4":4,"false":false}
в форматированом виде:
{
"1": 1,
"2": 2,
"o2": {
"5": 5,
"6": 6,
"o1": {
"v3": true,
"v4": 44,
"o0": {
"v0": 33,
"v1": false,
"v2": 3.14000000
},
"v5": 55
},
"true": true
},
"3": 3,
"4": 4,
"false": false
}
этот тип архива будет зваться yas_object.
от json отличается тем, что верхний уровень всегда объект, т.е. {}. верхний уровень не может быть массивом или значением.
скорость сериализации во много раз выше.
более подробно расскажу позже.
это подготовка к json архивам в составе YAS.
все это пока что у меня локально. недели через две вылью в паблик.
Re[5]: YAS: Yet Another Serialization
спасибо PM за поддержку по моей просьбе. коммит приняли.
сравнительные результаты:

(https://github.com/STEllAR-GROUP/cpp-serializers/blob/master/images/time.png)
сейчас проделано следующее:
1. почищен код, пофикшены ворнинги, убраны олд-стайл-касты и всякая фигня вроде '&str[0]'.
2. выброшена изрядная часть кода.
3. добавлены лимиты.
4. повышена производительность.
5. добавлен компактный(без использования varint) тип бинарных архивов(зовется yas_compact). (гораздо более быстрый, чем при использовании varint, но экономия в размере ниже)
6. в процессе реализация компактных архивов с использованием varint. (гораздо более медленный чем yas_compact, но экономия в размере выше)
7. добавлен новый тип архивов — object. это почти как json, но намного производительнее, и с некоторыми отличиями от json.
пример создания сложного, вложенного объекта:
будет сгенерен такой объект:
в форматированом виде:
этот тип архива будет зваться yas_object.
от json отличается тем, что верхний уровень всегда объект, т.е. {}. верхний уровень не может быть массивом или значением.
скорость сериализации во много раз выше.
более подробно расскажу позже.
это подготовка к json архивам в составе YAS.
все это пока что у меня локально. недели через две вылью в паблик.
сравнительные результаты:

(https://github.com/STEllAR-GROUP/cpp-serializers/blob/master/images/time.png)
сейчас проделано следующее:
1. почищен код, пофикшены ворнинги, убраны олд-стайл-касты и всякая фигня вроде '&str[0]'.
2. выброшена изрядная часть кода.
3. добавлены лимиты.
4. повышена производительность.
5. добавлен компактный(без использования varint) тип бинарных архивов(зовется yas_compact). (гораздо более быстрый, чем при использовании varint, но экономия в размере ниже)
6. в процессе реализация компактных архивов с использованием varint. (гораздо более медленный чем yas_compact, но экономия в размере выше)
7. добавлен новый тип архивов — object. это почти как json, но намного производительнее, и с некоторыми отличиями от json.
пример создания сложного, вложенного объекта:
int v0=33;
bool v1=false;
double v2=3.14;
bool v3=true;
int v4=44;
int v5=55;
auto o0 = YAS_OBJECT("object-0", v0, v1, v2);
auto o1 = YAS_OBJECT("object-1", v3, v4, o0, v5);
auto o2 = YAS_OBJECT("object-2", 5, 6, o1, true);
auto o3 = YAS_OBJECT("object-3", 1, 2, o2, 3, 4, false);
yas::mem_ostream os;
yas::json_oarchive<yas::mem_ostream> oa(os);
oa & o3;
будет сгенерен такой объект:
{"1":1,"2":2,"o2":{"5":5,"6":6,"o1":{"v3":true,"v4":44,"o0":{"v0":33,"v1":false,"v2":3.14000000},"v5":55},"true":true},"3":3,"4":4,"false":false}
в форматированом виде:
{
"1": 1,
"2": 2,
"o2": {
"5": 5,
"6": 6,
"o1": {
"v3": true,
"v4": 44,
"o0": {
"v0": 33,
"v1": false,
"v2": 3.14000000
},
"v5": 55
},
"true": true
},
"3": 3,
"4": 4,
"false": false
}
этот тип архива будет зваться yas_object.
от json отличается тем, что верхний уровень всегда объект, т.е. {}. верхний уровень не может быть массивом или значением.
скорость сериализации во много раз выше.
более подробно расскажу позже.
это подготовка к json архивам в составе YAS.
все это пока что у меня локально. недели через две вылью в паблик.