Инструменты многоядерного сжатия

Инструменты многоядерного сжатия

Чтокомпрессионные инструментыдоступны в Ubuntu, которые могут извлечь выгоду из многоядерного процессора.

решение1

Ну, ключевое слово былопараллельный. После поиска всех инструментов сжатия, которые также былипараллельныйЯ нашел следующее:

ПХЗ- Parallel XZ — это утилита сжатия, которая использует преимущества выполнения сжатия LZMA различных частей входного файла на нескольких ядрах и процессорах одновременно. Ее основная цель — использовать все ресурсы для ускорения времени сжатия с минимальным возможным влиянием на степень сжатия.

sudo apt-get install pxz

ПЛЗИП- Lzip — это компрессор данных без потерь, основанный на алгоритме LZMA, с очень безопасной проверкой целостности и пользовательским интерфейсом, похожим на интерфейс gzip или bzip2. Lzip распаковывает почти так же быстро, как gzip, и сжимает лучше, чем bzip2, что делает его хорошо подходящим для распространения программного обеспечения и архивирования данных.

Plzip — это массивно-параллельная (многопоточная) версия lzip, использующая формат файла lzip; файлы, создаваемые plzip, полностью совместимы с lzip.

Plzip предназначен для более быстрого сжатия/распаковки больших файлов на многопроцессорных машинах, что делает его особенно подходящим для распространения больших файлов программного обеспечения и крупномасштабного архивирования данных. Для достаточно больших файлов plzip может использовать сотни процессоров.

sudo apt-get install plzip

ПИЦЗ- pigz (Parallel Implementation of GZip) — это полнофункциональная замена gzip, которая использует преимущества нескольких процессоров и нескольких ядер при сжатии данных.

sudo apt-get install pigz

PBZIP2- pbzip2 - это параллельная реализация bzip2-блок-сортирующего файлового компрессора, который использует pthreads и достигает почти линейного ускорения на SMP-машинах. Выход этой версии полностью совместим с bzip2 v1.0.2 (т.е. все, что сжато с помощью pbzip2, может быть распаковано с помощью bzip2).

sudo apt-get install pbzip2

ЛРЗИП- Многопоточная программа сжатия, которая может достигать очень высоких коэффициентов сжатия и скорости при использовании с большими файлами. Она использует комбинированные алгоритмы сжатия zpaq и lzma для максимального сжатия, lzo для максимальной скорости и дальнее снижение избыточности rzip. Она разработана для масштабирования с увеличением размера ОЗУ, что еще больше улучшает сжатие. Выбор оптимизации размера или скорости позволяет либо получить лучшее сжатие, чем может обеспечить lzma, либо лучшую скорость, чем gzip, но с уровнями сжатия размера bzip2.

sudo apt-get install lrzip

Небольшой тест сжатия (с использованием теста, созданного Оли):

ОРИГИНАЛЬНЫЙ РАЗМЕР ФАЙЛА - 100 МБ
PBZIP2 - 101 МБ (на 1% больше)
PXZ - 101 МБ (на 1% больше)
PLZIP - 102 МБ (на 1% больше)
LRZIP - 101 МБ (на 1% больше)
PIGZ - 101 МБ (на 1% больше)

Небольшой тест сжатия (с использованием текстового файла):

ОРИГИНАЛЬНЫЙ РАЗМЕР ФАЙЛА - 70 КБ Текстовый файл
PBZIP2 - 16,1 КБ (23%)
PXZ - 15,4 КБ (22%)
PLZIP - 15,5 КБ (22,1%)
LRZIP - 15,3 КБ (21,8%)
PIGZ - 17,4 КБ (24,8%)

решение2

Есть два основных инструмента. lbzip2и pbzip2. По сути, это разные реализации компрессоров bzip2. Я сравнил их (вывод — это упорядоченная версия, но вы должны иметь возможность запускать команды)

cd /dev/shm  # we do all of this in RAM!
dd if=/dev/urandom of=bigfile bs=1024 count=102400

$ lbzip2 -zk bigfile 
Time: 0m3.596s
Size: 105335428 

$ pbzip2 -zk bigfile
Time: 0m5.738s6
Size: 10532460

lbzip2Кажется, это победитель на случайных данных. Он немного менее сжат, но гораздо быстрее. YMMV.

решение3

Обновлять:

XZ Utilsподдерживает многопоточное сжатие с версии 5.2.0, первоначально оно ошибочно документировалось как многопоточная распаковка.

Например:tar -cf - source | xz --threads=0 > destination.tar.xz

решение4

Zстандартподдерживает многопоточность сверсия 1.2.0¹. Это очень быстрый компрессор и декомпрессор, призванный заменить gzip, и он также может сжимать так же эффективно (если не лучше), как LZMA2/XZ на самых высоких уровнях.

Вам нужно использоватьодин из этих релизов, или скомпилируйте последнюю версию из исходников, чтобы получить эти преимущества. К счастью, это не тянет за собой много зависимостей.

В версии zstd 1.1.0 также был сторонний pzstd.

Связанный контент