Сжатие структурированных сообщений - PullRequest
0 голосов
/ 07 ноября 2019

Есть ли библиотеки для сжатия структурированных сообщений? (как protobufs)

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

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

1 Ответ

0 голосов
/ 07 ноября 2019

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

Компрессор, движущийся в этом направлении, ZPAQ ,Он может использовать файлы конфигурации, адаптированные к конкретным данным (пример сайта конфигурации включает в себя конфиги EXE, JPG, BMP, а также специальный файл для сжатия файла, содержащего математическую константу pi). Недостатком является то, что используемый здесь язык сценариев (ZPAQL) довольно сложен в использовании, и вы должны познакомиться со многими внутренними компонентами ZPAQ.

В старых версиях WinRAR использовалась виртуальная машина с именем RarVM (хотя сейчас она устарела)), который позволял использовать подобный ассемблеру код для пользовательских преобразований данных, есть проект с открытым исходным кодом с именем rarvmtools на GitHub с некоторыми связанными инструментами.

Для сжатия protobuf есть проект Google называется riegeli , который может еще больше сжать их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...