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