• XSS.stack #1 – первый литературный журнал от юзеров форума

Compression library

Jeffs

(L1) cache
Забанен
Регистрация
28.12.2018
Сообщения
611
Реакции
358
Пожалуйста, обратите внимание, что пользователь заблокирован
Всем привет, пишу что-то на подобии архиватора, в поисках миниатюрной либы для сжатия. Думаю использовать zlib, с 240 до 12 кб ужимает, но немного отпугивает вес (более 50 кб).
Какую либу вы можете порекомендовать?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Остановился на miniLZO. Весом около 2 кб (использую только сжатие), 1 метр данных до 70 кб ужимает.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Сильное заявление, а что за данные, поди одни нули?
Строка с кучей делимитеров, поэтому такая бешенная компрессии.
Для статистики:
LZ4 - те же данные, 62 КБ
LZO - те же данные, 70 КБ
 
Пожалуйста, обратите внимание, что пользователь заблокирован

А это тестил или тебе не под винду?
Тестил, так себе сжимает. С 1 метра данных до 120 кб, если мне память не изменяет. У меня данные сжимаются на клиенте и отправляются на сервер, поэтому нужно кроссплатформенное решение. Остановился на LZO
 
Тестил, так себе сжимает. С 1 метра данных до 120 кб, если мне память не изменяет. У меня данные сжимаются на клиенте и отправляются на сервер, поэтому нужно кроссплатформенное решение. Остановился на LZO

Оно и в конечном итоге получиться кросс-платформенным, если шо.
Все что данная функция делает - это обёртка вокруг встроенных движков компрессии, а на сервере можешь просто выбрать готовую реализацию алгоритма для декомпрессии сиего чуда. (LZNT1/XPRESS/XPRESS HUFFMAN)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Оно и в конечном итоге получиться кросс-платформенным, если шо.
Все что данная функция делает - это обёртка вокруг встроенных движков компрессии, а на сервере можешь просто выбрать готовую реализацию алгоритма для декомпрессии сиего чуда. (LZNT1/XPRESS/XPRESS HUFFMAN)
Благодарю, не знал. В любом случае, степень сжатия там убогая.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Провёл ещё одни тесты.
Source: 12.750 метров sqlite баз (chome, ff)
LZO: 1.608 KB
LZ4 (LZ4_compress_default): 1.558 KB
LZ4 (LZ4_compress_HC(..., ..., 9)): 1.366 KB
ZLIB (с флагом Z_BEST_COMPRESSION): 1.208 KB
ZLIB (с флагом Z_DEFAULT_COMPRESSION): 1.210 KB
RtlCompressBuffer (с флагом COMPRESSION_FORMAT_LZNT1): 1.809 KB
RtlCompressBuffer (с флагом COMPRESSION_FORMAT_XPRESS): 1.581 KB
RtlCompressBuffer (с флагом COMPRESSION_FORMAT_XPRESS_HUFF): 1.370 KB
RtlCompressBuffer (с флагом COMPRESSION_FORMAT_LZNT1 | COMPRESSION_ENGINE_MAXIMUM): 1.751 KB
RtlCompressBuffer (с флагом COMPRESSION_FORMAT_XPRESS | COMPRESSION_ENGINE_MAXIMUM): 1.468 KB
RtlCompressBuffer (с флагом COMPRESSION_FORMAT_XPRESS_HUFF | COMPRESSION_ENGINE_MAXIMUM): 1.238 KB
Тесты не совсем обьективные, степень сжатия от многих факторов зависит. У вас цифры могут отличаться.
 
Последнее редактирование модератором:
Пожалуйста, обратите внимание, что пользователь заблокирован
А так пробывал?
Дополнил.
Удивлён результатами RtlCompressBuffer(COMPRESSION_FORMAT_XPRESS_HUFF | COMPRESSION_ENGINE_MAXIMUM, ...), декомпрессировать бы всё это дело ещё на голанге как-нибудь.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Вот тут кстати исходник алгоритмов LZNT1, XPRESS, ZPRESS Huffman есть:
Можно в либу собрать и юзать из того же голанга/питона. Я пожалуй остановлюсь на zlib, как показали тесты, у LZO самая плохая степень сжатия в моих условиях.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх