Какой самый быстрый декомпрессор bzip2? - PullRequest
6 голосов
/ 13 сентября 2010

Какая реализация bzip2 имеет наибольшую скорость распаковки?

Существует http://bitbucket.org/james_taylor/seek-bzip2/src/tip/micro-bunzip.c, который утверждает

Оптимизация размера и скорости Мануэль Новоа III (mjn3@codepoet.org). Более эффективное чтение Хаффмана коды, упрощенный read_bunzip () функция и различные другие настройки. В (ограниченных) тестах примерно 20% быстрее, чем bzcat на x86 и около 10% быстрее на руку. Обратите внимание, что около 2/3 время тратится в read_unzip () вспять Барроуз-Уилер преобразование. Большая часть этого времени задержка в результате пропадания кэша.

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

Этот (seek-bzip2) также имеет интересную особенность легкого поиска во входном файле.

Моя программа будет использовать вывод bzip2 и (теоретически) может делать это параллельно в разных частях файла. Итак, параллельные реализации bzip2 тоже рассматриваются.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 15 сентября 2010

Там немного http://lists.debian.org/debian-mentors/2009/02/msg00135.html сравнения.Рассматриваются параллельные версии.

Немного также есть http://realworldtech.com/forums/index.cfm?action=detail&id=98883&threadid=98430&roomid=2

ссылки взяты из параллельной версии Intel bzip2 http://software.intel.com/en-us/articles/a-parallel-bzip2/

Кроме того, bzip2 от Intel от ipp-powered.это хорошо, а также пытается в IPP (с отрицательным эффектом) распараллелить некоторые внутренности bzip2 (без распаковки параллельных блоков) с openmp (intel KMP 5).При ограничении одного или двух потоков 20 МБ / с распакованного потока действительны для 2.4 core2 (код ipp "v8")

Надеюсь, это поможет.

0 голосов
/ 26 марта 2017

Если у вас есть доступ к многопроцессорным компьютерам (легко подключить многопроцессорные виртуальные машины на Amazon EC2 или Digital Ocean) / машинам с большим объемом оперативной памяти, вам обязательно стоит проверить PBZIP2 :

PBZIP2 - это параллельная реализация файлового компрессора bzip2, который использует pthreads и достигает почти линейного ускорения на машинах SMP


Для иллюстрации: в данный момент я распаковываю большой файл размером 17 ГБ. bzip2 записывал распакованный файл со скоростью 10 Мбит / с; PBZIP2 пишет это сейчас со скоростью 160 Мбит / с. Я запускаю это так:

pbzip2 -v -d -k -m10000 file.bz2

т.е. -v подробный -d распаковка -k сохранение исходного файла -m1000 использование 10 ГБ ОЗУ

Это работает на 64 ГБ ОЗУ, 20-процессорной машине на Digital Ocean, что стоит $ 0,952 / час. : -)

...