LINUX.ORG.RU

msgpack C/C++ 6.0.0

 , , , ,


0

1

Вышла новая версия msgpack for C/C++ — библиотеки сериализации двоичных данных на основе формата MessagePack.

Важные изменения:

  • имя С пакета в CMake изменено на msgpack-c;
  • имя С++ пакета в CMake изменено на msgpack-cxx;
  • удалено обязательное требование использования С++, если не используются тесты.

>>> Подробности



Проверено: hobbit ()

Интересно, где этот формат используется и зачем? В его слогане зачем-то указано, что он «быстрее и меньше, чем JSON», но тесты показывают, что он проигрывает и BSON (т.е. бинарному JSON), и Protobuf… 🤔

raspopov ()

Это типа бинарного Джейсона, если кто не в курсе.

thegoldone ()
Ответ на: комментарий от raspopov

$ apt-cache rdepends libmsgpackc2

libmsgpack-dev
tmate-ssh-server
tmate
neovim-qt
neovim
libdata-messagepack-stream-perl
libgroonga0
groonga-plugin-suggest
dataman ()

Хорошая штука, но как всегда негде применить, а если надо наверное у каждого есть свой велосипед =)))

Поиграть можно тут https://kawanet.github.io/msgpack-lite/

LINUX-ORG-RU ★★★★★ ()
Ответ на: комментарий от raspopov

но тесты показывают, что он проигрывает и BSON

где эти тесты?

rupert ★★★★★ ()
Ответ на: комментарий от raspopov

В питоне по каким-то причинам быстрее оных

michwill ★★★★★ ()
Ответ на: комментарий от annulen

ASN.1 даже в первом рассмотрении делится на BER и DER, не говоря уже про экзотику типа кодирования в XML. И реализаций у него множество, большинство которых реализуют свое подмножество стандарта.

Так что если и заводить, то отдельную страничку под все это дело.

Siborgium ★★★★ ()
Ответ на: комментарий от dataman

и почти каждая библиотека быстрая, очень быстрая или даже быстрейшая.

…но если нужно что-то сложное, ядрёное и энтерпрайзное, то обычно смотрят в сторону Protobuf.

hobbit ★★★★★ ()

обязательное требование использования С++, если не используются тесты

Ох лол

CYB3R ★★★★★ ()
Ответ на: комментарий от raspopov

Использовал msgpack, он реально неплох.

На protobuf вообще не похож, у protobuf кодогенерация. (Хотя мне в итоге пришлось для msgpack тоже делать кодогенерацию).

От BSON немного отличается, но реально BSON менее компактный.

For example, a simple map {«a»:1, «b»:2} is serialized in 7 bytes with MessagePack, while BSON uses 19 bytes.

Я когда-то for fun пытался придумать свой идеальный формат для бинарной сериализации, и в итоге у меня получился msgpack почти бит-в-бит, отличие было только в bin и ext части. Это говорит о том, что в msgpack ещё и продумана расширяемость.

Biga ()
Ответ на: комментарий от Biga

но реально BSON менее компактный.

Как бы вам это объяснить… Обязательное замороченное битовое «сжатие» служебных полей в пакетах данных конечно… эм… прикольно что ли, но не является существенным фактором влияющим на трафик, однако повышает накладные расходы на обработку пакетов по всей цепочке передачи. Именно поэтому так популярна кодогенерация, как в Protobuf, для имплементации маршалинга, ещё с древних времён rpc/dcom/corba и т.д. А если нужно уменьшить данные, то данные придётся честно сжать…

raspopov ()

А что, спецификация выглядит довольно приличественно…

svyatozar ★★ ()

Проекту сто лет в обед, но не видел его ни в одном продакшен приложении.

Что с ним не так?

guyvernk ()
Ответ на: комментарий от raspopov

однако повышает накладные расходы на обработку пакетов по всей цепочке передачи.

Што? Схрена ли формат кодирования как-то влияет на пересылку пакетов? Роутеру насрать что именно роутить.

hateyoufeel ★★★★★ ()
Ответ на: комментарий от hateyoufeel

Што? Схрена ли… насрать…

Именно роутеру? Ну, хорошо, допустим вашу узкую конкретику: А если бы IP-пакеты были бы так же упакованы? Ну вот, захотелось вам свой гипотетический IPv1337 на основе MessagePack сделать. 🤔

raspopov ()
Ответ на: комментарий от raspopov

А если бы IP-пакеты были бы так же упакованы? Ну вот, захотелось вам свой гипотетический IPv1337 на основе MessagePack сделать. 🤔

Это уже к санитарам.

hateyoufeel ★★★★★ ()
Ответ на: комментарий от hateyoufeel

Это уже к санитарам.

Вот поэтому и нет такой упаковки данных в IP, и задница вашего роутера в относительной безопасности. 😎

raspopov ()
Ответ на: комментарий от raspopov

Вот поэтому и нет такой упаковки данных в IP, и задница вашего роутера в относительной безопасности. 😎

В смысле нет? Заголовки в IP упакованы по самое небалуй. А всё, что после заголовка, роутер не парит. Ну, почти.

hateyoufeel ★★★★★ ()
Ответ на: комментарий от raspopov

Они НЕ упакованы.

Начни с определения термина «упакованы». В IP заголовках нет избыточности, потому что формат уже предполагает упаковку по максимуму.

hateyoufeel ★★★★★ ()
Ответ на: комментарий от raspopov

Юзали в 2016 для мобильных клиентов, по 3г жирный жсон долго выходит. Сейчас хз зачем надо

Хотя ща подумал, если её с gql скрестить то может и выйдет чего

upcFrost ★★★★★ ()
Последнее исправление: upcFrost (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

Начни с определения термина «упакованы»

Смею напомнить, что здесь мы с вами говорим о MessagePack, и, соответственно, о его способах упаковки.

raspopov ()
Ответ на: комментарий от raspopov

msgpack применяется там, где количество данных заранее неизвестно. Для вещей типа сетевых пакетов, где длина статична, такие форматы не имеют смысла.

hateyoufeel ★★★★★ ()
Ответ на: комментарий от raspopov

Длина заголовков статична. Содержимое пакета после заголовка – проблема приложения, и там может быть что угодно.

hateyoufeel ★★★★★ ()
Ответ на: комментарий от hateyoufeel

Длина заголовков статична.

В том-то и дело, что если бы IP-пакет использовал MessagePack кодирование, то он не был бы со статичным заголовком. Напоминаю, что IP-пакет мы взяли потому, что вы зачем-то решили перевести обсуждение на гипотетические MessagePack-роутеры, хотя это явно не упрощает ситуацию для вашего понимания.

raspopov ()
Ответ на: комментарий от raspopov

гмгм… я вообще не понимаю, нахрена ты сюда притащил про сетевые пакеты, но ты всё равно неправ. Даже про msgpack.

hateyoufeel ★★★★★ ()
Ответ на: комментарий от hateyoufeel

нахрена

Эм… 🤔 Про сетевые пакеты это вы упомянули, я писал про пакеты данных в общем, без относительно физического уровня передачи, хоть из памяти на диск. Конкретно, вы сказали про «роутер», и я привёл пример с роутером, надеясь, что вам так будет понятнее.

raspopov ()
Ответ на: комментарий от hateyoufeel

Длина заголовков статична.

Лолшто?

В IP заголовках нет избыточности

Серьезно? т.е., они несжимаемы? А если сожму?

BydymTydym ()
Ответ на: комментарий от BydymTydym

Серьезно? т.е., они несжимаемы? А если сожму?

Сожми. Мне интересно будет посмотреть на это.

hateyoufeel ★★★★★ ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.