Какой алгоритм сжатия наиболее эффективен между xz, gzip и bzip2?

14489
Nathan2055

Между xz, gzip и bzip2, какой алгоритм сжатия дает наименьший размер файла и самую высокую скорость при сжатии довольно больших тарболлов?

13
«лучший», как в «в результате наименьший размер файла»? Hennes 11 лет назад 0
Я не знаю, я пытался найти способ сформулировать вопрос, чтобы я мог добавить свой тест в качестве ответа. Я также понятия не имею, почему эта вещь была закрыта. @Karan Nathan2055 11 лет назад 0
О, почему это было закрыто, это легко. «Лучшее» очень субъективно и обычно приводит к дискуссиям или неконструктивным ответам. Наилучшим сжатием может быть наименьший размер файла, самое быстрое сжатие, наименьшая мощность, используемая для сжатия (например, на ноутбуке), наименьшее влияние на систему при сжатии (например, древние однопоточные программы, использующие только одно из ядер), ... или комбинация из всех тех. Hennes 11 лет назад 1
Интересная статья для чтения http://www.tomshardware.com/reviews/winrar-winzip-7-zip-magicrar,3436.html (основанная на Windows и ориентированная на 7zip, magicRAR, WinRAR и WinZip, а не на xz, gz или бз, но все равно интересно и даёт справочную информацию). Hennes 11 лет назад 0
@Hennes - Я очистил пост, чтобы заменить лучшее на то, что я исследовал. Кроме того, спасибо за статью, которую вы упомянули, я прочитаю ее позже сегодня. Nathan2055 11 лет назад 0

3 ответа на вопрос

11
Nathan2055

In my stress test, I compressed 464 megabytes of data using the three formats listed. Gzip returned a 364 MB file. Bzip2 returned a 315 MB file. Xz returned a 254 MB file. I also did a simple speed test:

Compression:

1: Gzip

2: Xz

3: Bzip2 (my fan was blowing quite a bit while this was going, indicating that my Athlon II was fairly strained)

Decompression:

1: Xz

2: Gzip

3: Bzip2

Please note that all of these tests were done with the latest version of 7-Zip.

Xz is the best format for well-rounded compression, while Gzip is very good for speed. Bzip2 is decent for its compression ratio, although xz should probably be used in its place.

Хорошее исследование. Вы пробовали различные варианты уровня сжатия, предлагаемые (по крайней мере) bzip2, например `bzip2 -9`? Aaron Miller 11 лет назад 2
@AaronMiller - Нет, возможно ли использовать их через 7-Zip? Nathan2055 11 лет назад 0
Это выглядит так, хотя я не уверен, в какой степени: см. Http://www.dotnetperls.com/7-zip-examples, раздел «Switch m». Aaron Miller 11 лет назад 0
Из любопытства, какие данные были в файле теста? GeminiDomino 10 лет назад 6
Обратите внимание, что разные типы данных приводят к разным сжатым размерам. См. [Здесь] (https://www.lifewire.com/which-is-the-best-compression-tool-for-linux-4082712) для примеров. Ploni 6 лет назад 0
3
Persian

I did my own benchmark on 1.1GB Linux installation vmdk image:

rar =260MB comp= 85s decomp= 5s 7z(p7z)=269MB comp= 98s decomp=15s tar.xz =288MB comp=400s decomp=30s tar.bz2=382MB comp= 91s decomp=70s tar.gz =421MB comp=181s decomp= 5s 

all compression levels on max, CPU Intel I7 3740QM, Memory 32GB 1600, source and destination on RAM disk

I Generally use rar or 7z for archiving normal files like documents.
and for archiving system files I use .tar.gz or .tar.xz by file-roller or tar with -z or -J options along with --preserve to compress natively with tar and preserve permissions (also alternatively .tar.7z or .tar.rar can be used)

update: as tar only preserve normal permissions and not ACLs anyway, also plain .7z plus backup and restoring permissions and ACLs manually via getfacl and sefacl can be used which seems to be best option for both file archiving or system files backup because it will full preserve permissions and ACLs, has checksum, integrity test and encryption capability, only downside is that p7zip is not available everywhere

Студент, какие были варианты рар? Почему бы не попробовать [lrzip by kolivas] (http://ck.kolivas.org/apps/lrzip/), он должен хорошо работать для образов виртуальных дисков. osgx 9 лет назад 0
Я перехожу с RAR на Git и tarballs для моих текстовых файлов и btrfs для всего остального; моя причина использования RAR не в производительности, я использую ее из-за таких функций, как запись восстановления, отдельная 256-битная контрольная сумма на уровне файлов для каждого файла и .... Persian 9 лет назад 0
1
Johnride

Я думаю, что эта статья дает очень интересные результаты.

http://pokecraft.first-world.info/wiki/Quick_Benchmark:_Gzip_vs_Bzip2_vs_LZMA_vs_XZ_vs_LZ4_vs_LZO

Наиболее эффективными форматами являются xz и lzma, оба с переданным параметром -e.

Самым быстрым алгоритмом на сегодняшний день являются lzop и lz4, которые могут выдавать уровень сжатия не очень далеко от gzip за 1,3 секунды, тогда как gzip занимал 8,1 секунды. Степень сжатия составляет 2,8 для lz4 и 3,7 для gzip.

Вот несколько результатов, которые я извлек из этой статьи:

  • Gzip: 8,1 с при 3,7

  • lz4: 1,3 с при 2,8

  • xz: 32,2 с при 5,43

  • xz-e: 6m40 @ 7.063

  • xz: 4m51s @ 7.063

Так что если вам действительно нужна скорость, lz4 великолепен и по-прежнему обеспечивает степень сжатия 2,8.

Если вам отчаянно нужно сэкономить байт, xz при максимальном уровне сжатия (9) лучше всего справляется с текстовыми файлами, такими как исходный код ядра. Однако это очень долго и занимает много памяти.

Хорошим примером для минимизации влияния на время и пространство является gzip. Это тот, который я бы использовал для ежедневного ручного резервного копирования производственной среды.

Похожие вопросы