LINUX.ORG.RU

msgpack C/C++ 6.0.0

 , , , ,


0

1

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

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

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

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

★★★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 2)

Интересно, где этот формат используется и зачем? В его слогане зачем-то указано, что он «быстрее и меньше, чем 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
()
17 апреля 2023 г.
Ответ на: комментарий от BydymTydym

Метод сжатия Ван Якобсона уменьшает обычные 40-байтные заголовки TCP/IP-пакетов примерно до 3-4 байт (в лучшем случае). Это достигается за счет запоминания состояния TCP-соединений на обоих концах соединения, и отсылаются только изменения в полях заголовка.

Если не передавать информацию, то её не надо сжимать. BIG BRAIN STUFF!!!!!11

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

Так-то оно да, но… Я какой-то не такой метод показал или что?
Ну и про длину заголовка тож вопрос остался. Я тут как раз с опциями копаюсь, CIPSO наше всё. И вот они (опции) смотрят в недоумении на утверждение про константу длины заголовка.

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

Ладно, мало ли кто чего не знает. Я вот настолько много не знаю в ИТ, что вот уже четверть века просыпаюсь в холодном поту от мысли что собрались как-то все HR, HH и прочие начальники больших департаментов и малых подразделений и говорят такие: «Имярек TydymBydym слишком многого не знает в ИТ, давайте его с позором вып…гоним!» Ну и сразу крики поддержки со всех сторон что типа давно пора и доколе.
И тут, откуда-то из каптерки выбегает человек не первой свежести и явно не из ТОПов, очевидно что выше начальника небольшого отдельчика вообще никогда не поднимался да и в будущем не светит. Так вот, подбегает он к высокоуважаемому кворуму и размазывая слезы и сопли по щекам говорит: «Уважаемые! Вы целиком и полностью правы - этот гандон недостоин высокого звания ИТшника! Его надо вып…гнать! Но есть одна маленькая проблемка…»
Все на него смотрят как на вошь и один начальник, из тех что повыше, спрашивает: «Ну и что это за проблемка такая?»
И этот жалкий человечешка из каптерки, будто шагнув в ледяную воду (а может, за борт на высоте 3500) выплевывает одну фразу. Всего лишь одну. Эта мразь позволила себе произнести «Работать будет некому!». Подумать только…

Короче, я мы так много не знаем зачастую, что с годами только усугубляем это незнание…

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

Ну не будь душнилой, а? Это разностное сжатие заголовков. Никто не обещал что мы берем единственный пакет и люто сжимаем его до нуля байт. Трафик, как правило, по одному пакету не ходит…

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

ICMP

OMG

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

Я показал, дальше-то что? Мне напомнить что для того чтобы доказать ложность суждения, достаточно привести единственный пример? Я привел.

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

Я показал, дальше-то что? Мне напомнить что для того чтобы доказать ложность суждения, достаточно привести единственный пример? Я привел.

Нет, не привёл. Поскольку из этого «упакованного» заголовка восстановить оригинал невозможно без информации извне.

Потому что иначе если называть это сжатием, то так можно сжать вообще что угодно во сколько угодно раз. Просто выкинуть 99% инфы и сказать «мы передадим это отдельно».

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

Ок, не сжатие.
Т.е., ты обвиняешь великих предков в том, что они использовали «якобы сжатие заголовков» для того чтобы… для того чтобы что? Видимо, для того чтобы я попытался ввести в заблуждение тебя и прочих этим нелепым примером.
И пользователи страдали, включали эту опцию, кололись и плакали, но продолжали страдать.
А, кстати. Что это еще за «информация извне», без которой невозможно восстановить заголовок. И по какому каналу она передавалась между хостами, если без нее было невозможно восстановление и, как следствие, связь?
Короче, тебя послушать, архиваторы не имеют право создаваться со словарем. Только хардкор, только RLE, никаких тебе LZW+.

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

Ок, не сжатие.

Ура!

Т.е., ты обвиняешь великих предков в том, что они использовали «якобы сжатие заголовков»

Нет, я обвиняю тебя в том, что ты путаешь член с пальцем. Указанный метод сокращения трафика вполне ок, просто это не сжатие.

Короче, тебя послушать, архиваторы не имеют право создаваться со словарем.

Если меня послушать, то ты баклажан. Потому что ты баклажан.

hateyoufeel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.