多文件压缩基准测试摘要

多文件压缩基准测试摘要

在此处输入图片描述

那么 7zip 中有不同的压缩方法。哪种方法最适合哪种任务?

例如:LZMA 和 LZMA2 之间的一个区别是我可以选择所有 CPU 核心,而在 LZMA 中 2 个核心是最大值。

答案1

使用 LZMA 2,除非您想要在无法处理 LZMA 2 档案的系统上提取档案。

一般来说,大多数现代压缩算法提供的压缩率大致相同,至于您可以同时使用的核心数,您可以自行决定要使用多少个。不过一般来说(除非您正在创建大型档案),没有必要需要多个核心。此外,如果使用多个核心进行压缩,瓶颈可能就是硬盘。

答案2

7-Zip(至少截至 2019-09-27)有一个内置的帮助文档,其中非常非常好地解释了您可以选择的各种设置以及每种设置的一般用途。

虽然没有基准测试结果或任何其他内容,但这些信息足以让我相信我选择的设置“足够好”,而不是“意外糟糕”的设置。

可以通过 7-Zip 文件管理器以及“添加到存档”对话框获取帮助文档。

我发现有用的页面的“内容”路径(直接从“添加到存档”对话框打开)是:

File Manager / Plugins / 7-Zip / Add to Archive Dialog Box

在此处输入图片描述

以下是压缩方法部分的粗略复制/粘贴:

方法描述

  • 左心室舒张功能
    • 这是 7z 格式的基本压缩方法。即使是旧版本的 7-Zip 也可以解压使用 LZMA 方法创建的档案。它提供高压缩率和非常快的解压速度。
  • LZMA2
    • 7z 格式的默认压缩方法。LZMA2 是基于 LZMA 的压缩方法。它提供比 LZMA 更好的多线程支持。但在某些情况下压缩率可能会更差。要使用 LZMA2 获得最佳压缩率,请使用 1 或 2 个 CPU 线程。如果您使用超过 2 个线程的 LZMA2,7-zip 会将数据拆分为块并独立压缩这些块(每个块 2 个线程)。
  • 平均粒径
    • Dmitry Shkarin 的 PPMdH 算法略有改动。通常它为文本文件提供高压缩率和高速度。
  • 压缩2
    • 基于BWT算法的标准压缩方法,通常对文本文件提供较高的速度和较好的压缩率。
  • 放气
    • ZIP 和 GZip 格式的标准压缩方法。压缩率不是很高。但它提供了相当快的压缩和解压速度。Deflate 方法仅支持 32 KB 字典。
  • Deflate64
    • 修改后的 Deflate 算法版本,具有更大的词典(64KB)。

答案3

当使用 4 个或更多核心时,Lzma2 速度更快,并且压缩效果更好。这个文件解释了这一切。

答案4

可以在 wayback machine 上找到链接:

https://web.archive.org/web/20221015140740/http://www.maximumcompression.com/data/summary_mf2.php

(重新格式化表格很烦人 - 想知道为什么它不能将 html 表格转换为它自己的格式)

多文件压缩基准测试摘要

文件类型:多种文件类型(共46种)

本次测试中要压缩的文件数量:510

总文件大小(字节):316.355.757

平均文件大小(字节):620,305

最大文件(字节):18,403,071

最小文件(字节):3,554

此测试旨在模拟无损数据压缩器的“真实世界”性能。测试集包含各种不同的文件类型,选择这些文件类型时要考虑“人们最常使用归档器做什么”。测试集应包含数据,并根据普通用户使用压缩软件压缩这些文件的频率对其进行加权(包括文件类型和文件比例)。例如,集合中的 txt 文件数量将多于 .ocx 文件数量(是的,这是任意的)。集合包含 100 个文件,总大小超过 300 Mb。大型集合的目的是过滤掉“噪音”。压缩器在 1 或 2 种文件类型上的表现可能不佳,但在非常大的集合上,影响不会那么大。

某些程序(如 CCM 和 BZIP2)一次只能压缩一个文件。对于这些程序,将创建一个包含所有文件的 TAR 文件。此 TAR 文件中的文件按后缀字母顺序排列,然后是名称。这些压缩器的结果在 tarred 列中标记为“Y”。

测试集包含以下文件类型:

文件类型) 描述 占总数的百分比 文件数
目录、MBX Eudora 邮箱 12.31 16
EXE、DLL、OCX、DRV 可执行文件 10.99 三十五
TXT、RTF、DIC、LNG 多种语言的文本文件 10.21 41
BMP,TIFF 位图/TIF 图像 7.88 15
日志 日志文件 6.34 6
HTML、PHP HTML 文件 6.13 19
文档 MS Word 文件 6.08 三十
C、CPP、PAS、DCU 源代码 6.00 235
MDB,CSV 数据库 4.26 7
高级语言处理 Windows 帮助文件 4.23 7
脑血流量、脑血管病 预压缩国际象棋数据库 3.55 2
音频 波形声音文件 3.45 9
XLS XLS 电子表格 2.41 16
PDF Adobe Acrobat 文档 1.59 6
特福 True Type 字体 1.15 15
防御 病毒定义文件 1.10 3
JPG, GIF 图像文件 0.53 9
慢性疾病管理委员会 预压缩的帮助文件 0.49 2
INI、INF INI 文件 0.42 10
其他的 DAT、JAR、M3D、SYS、PPT、MAP、WP、RLL、RIB.. 10.88 二十七

考虑到这应该是一个“真实世界”测试,我不会寻找最佳的(命令行或 GUI)开关组合以实现最佳压缩,而只会像“普通用户”一样测试有限的组合。对于 7-zip,这意味着例如我将使用 GUI 并选择超级压缩方法(可以使用一些好的命令行开关轻松击败),WinRar 将使用最大字典大小和稳固存档等进行测试。程序最多可以使用 800 MB 内存,并且必须在 12 小时内完成压缩阶段。压缩后的大小必须是原始大小的 50% 或更小,才能在 MFC 上列出。

对于我的单文件测试,我收到了很多要求将压缩时间添加到表格中的请求。我没有这样做,原因在单文件摘要文件中有说明,但我计划测量此多文件测试的压缩时间!我还决定将此测试集设为“非公开”,这样开发人员就更难针对此特定测试调整他们的程序。我认为这是获得“真实”性能测试的最公平方式。

评分系统:压缩后大小最小的程序被视为最佳程序。最高效(阅读:使用完整)程序的计算方法是将生成存档所需的压缩 + 解压时间(以秒为单位)乘以存档大小的幂,再除以测量到的最低存档大小。分数越低越好。基本思想是,如果压缩器 X 的压缩速度是 Y 的两倍,并且生成的存档大小 X 比 Y 大 10%,则压缩器 X 的效率与压缩器 Y 相同。(特别感谢 Uwe Herklotz 正确计算出此公式)

score_X = POWER(2; ((size_X / size_TOP) - 1) / 0,1) * time_X

  score_X     efficiency score for a certain compressor X

  time_X      time elapsed by compressor X (comp + decomp time)

  size_X      archive size achieved with compressor X

  size_TOP    archive size by top archiver (smallest benchmark result)

根据压缩尺寸和压缩时间计算压缩机效率的公式

“0,1”代表 10%,2 的幂确保每差 10% 的结果(与顶级相比)时间就会翻倍,因此任何归档器(顶级压缩器除外)都会在时间上受到惩罚。顶级压缩器的分数始终等于其时间值。

相关内容