LINUX.ORG.RU

Ответ на: комментарий от hope13

https://github.com/lemire/SIMDCompressionAndIntersection

This library can decode at least 4 billions of compressed integers per second on most desktop or laptop processors. That is, it can decompress data at a rate of 15 GB/s. This is significantly faster than generic codecs like gzip, LZO, Snappy or LZ4.

Неплохо так.

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

Поэтому я и привёл эту ссылку. Надеюсь тебе пригодится.

hope13 ★★★
()

Самый простой вариант сделать последовательность разностей, закодированную с переменной длиной и сжать RLE потом. После этого можно убрать остальную избыточность через deflate или xz.

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

Я бы вообще deflate сжимал (38% дает запросто), но он медленно распаковывается.

А если взять последовательность разностей и RLE?

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

Попробовал snappy на последовательности разностей - вообще отлично: коэффициент сжатия 50% и время распаковки в 5-6 раз меньше, чем у стандартных gzip/deflate/lzw/zlib.

jollybeaver
() автор топика
Ответ на: комментарий от Xenius

А годную реализацию RLE на гитхабе фиг найдешь, надо свою писать.

jollybeaver
() автор топика
Ответ на: комментарий от Xenius

Плохо жмет RLE такие данные. Где snappy сжимает наполовину, RLE (простая реализация с гистограммой) - всего на 1%, в то время как скорость у snappy всего на чуточку меньше.

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

Попробовал snappy на последовательности разностей

можно не строить последовательность разниц - результат snappy не будет существенно отличаться, такими вычислениями вы не изменяете избыточность.

сугубо академично: вопрос у вас скорее не о сжатии данных, а о наиболее компактном представлении множества. Если знать больше о данных (вероятность дублировании значений, типичные длины выборок и прочее) то тут могут накидать идей/методов по «сжатию» в разы и на порядки, а не на жалкие 30-40%

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

Попробовал snappy на последовательности разностей...

А если транспонировать? Жать не оригинальную последовательность, а сначала старшие байты, потом помладше итд?

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

Ха. Тоже к этому пришел - еще до прочтения ответа. Результат значительно улучшается, да.

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

Собственно, это набор ID-шников - от 1 до N, с пропусками.

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