Быстрый статический huffman или арифметический кодер
От: Аноним  
Дата: 17.04.11 02:07
Оценка:
Есть много строк по 60 байт в среднем. Нужно сжимать их независимо друг от друга.
Можно заранее взять набор из достаточно большого количества этих строк, и прогнать алгоритм на нём, чтобы один раз получить таблицу для сжатия. Допустимо, если размер таблицы будет большим. Строки таковы, что сжимаются Хаффманом в 1.5 раза — это приемлимо.
Предполагается, что можно использовать алгоритм Хаффмана или арифметическое кодирование. (ещё можно попробовать какой-нибудь вариант алгоритма LZ, но не уверен, что будет нормально работать)
При этом хотелось бы иметь не очень низкую скорость сжатия и разжатия: минимум около 50MB/s на одном ядре (современного серверного процессора).

Какие есть для этого библиотеки, или откуда проще взять и модифицировать код?
Re: Быстрый статический huffman или арифметический кодер
От: BulatZiganshin  
Дата: 17.04.11 11:06
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть много строк по 60 байт в среднем. Нужно сжимать их независимо друг от друга.


форумы на encode.ru и compression.ru
Люди, я люблю вас! Будьте бдительны!!!
Re: Быстрый статический huffman или арифметический кодер
От: denisko http://sdeniskos.blogspot.com/
Дата: 17.04.11 11:21
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть много строк по 60 байт в среднем. Нужно сжимать их независимо друг от друга.

А>Можно заранее взять набор из достаточно большого количества этих строк, и прогнать алгоритм на нём, чтобы один раз получить таблицу для сжатия. Допустимо, если размер таблицы будет большим. Строки таковы, что сжимаются Хаффманом в 1.5 раза — это приемлимо.
А>Предполагается, что можно использовать алгоритм Хаффмана или арифметическое кодирование. (ещё можно попробовать какой-нибудь вариант алгоритма LZ, но не уверен, что будет нормально работать)
А>При этом хотелось бы иметь не очень низкую скорость сжатия и разжатия: минимум около 50MB/s на одном ядре (современного серверного процессора).

А>Какие есть для этого библиотеки, или откуда проще взять и модифицировать код?

Я для видеокодека брал какую-то из реализаций Range Coderа и допиливал его, правда, довольно серьезно. Для независимых строк вроде должен подойти так как параллелится на уровне команд довольно хорошо. По скорости сжатия должен влезть с запасом. По скорости распаковки -- надо смотреть, но тоже есть шанс что влезешь.
<Подпись удалена модератором>
Re: Быстрый статический huffman или арифметический кодер
От: Ytz https://github.com/mtrempoltsev
Дата: 17.04.11 15:13
Оценка: 1 (1)
Здравствуйте, Аноним, Вы писали:

А>При этом хотелось бы иметь не очень низкую скорость сжатия и разжатия: минимум около 50MB/s на одном ядре (современного серверного процессора).


А>Какие есть для этого библиотеки, или откуда проще взять и модифицировать код?


Посмотри, может подойдет: http://code.google.com/p/snappy/

On a single core of a Core i7 processor in 64-bit mode, Snappy compresses at about 250 MB/sec or more and decompresses at about 500 MB/sec or more.

Re: Быстрый статический huffman или арифметический кодер
От: lxa http://aliakseis.livejournal.com
Дата: 18.04.11 13:08
Оценка:
Здравствуйте, Аноним, Вы писали:
...
А>Предполагается, что можно использовать алгоритм Хаффмана или арифметическое кодирование. (ещё можно попробовать какой-нибудь вариант алгоритма LZ, но не уверен, что будет нормально работать)
А>При этом хотелось бы иметь не очень низкую скорость сжатия и разжатия: минимум около 50MB/s на одном ядре (современного серверного процессора).

А>Какие есть для этого библиотеки, или откуда проще взять и модифицировать код?

Здесь есть интересное сравнение (benchmark).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.