Galgame碎碎小知识——压缩算法与软件详细介绍

个人随笔解压压缩压缩算法解压缩软件压缩算法比较
浏览数 - 832发布于 - 2024-08-20 - 16:00
Misuzu
Misuzu

1803

ゆのくらげ_Skeb 148 紗茶子様_120251343_p0.png

在目前环境下我们需要游玩Galgame必须要掌握的自然是解压,关于解压背后的东东或多或少可以了解一下


压缩参数概念说明

在使用压缩软件进行文件压缩时,有几个关键参数可以显著影响压缩效果和性能。以下是对这些参数的简要说明:

分卷(Volume/Split Size)

  • 定义: 分卷是指将一个大的压缩文件拆分为多个小文件,以便于存储或传输。这种方法通常用于将超大文件分割成多个较小的部分,适合存储在不同的介质上,或通过电子邮件、网络共享等方式发送。

  • 应用: 分卷压缩特别适合处理大文件,将其分割成多个部分以便在不同介质上存储或传输。例如,你可以将一个大型软件包分割成多个小的分卷,以便刻录到多张光盘上,或者将其上传到支持文件大小限制的在线存储服务。

  • 常见分卷类型:

    • 7z.001 型分卷:

      • 格式: 7z.001, 7z.002, 7z.003, ...
      • 描述: 这是 7-Zip 压缩工具使用的分卷格式。分卷后缀按顺序编号,压缩文件的主文件为 .001,后续的分卷依次编号为 .002、.003 等。
      • 使用场景: 适用于使用 7-Zip 压缩大文件并希望将其分割成多个部分的情况。
    • part1.rar 型分卷:

      • 格式: part1.rar, part2.rar, part3.rar, ...
      • 描述: WinRAR 使用的分卷格式。文件名以 part 开头并按顺序编号(part1, part2, part3...),主文件通常以 .rar 结尾,后续分卷为 .r00、.r01 或 .part2.rar 等。
      • 使用场景: 常用于 WinRAR 创建的压缩文件分卷,适合将大型文件分割成更小的部分以便存储或传输。
    • .z01 型分卷:

      • 格式: .z01, .z02, .z03, ...
      • 描述: ZIP 格式的分卷,通常由工具如 WinZip、7-Zip 创建。主文件为 .zip,后续分卷按顺序编号为 .z01、.z02 等。
      • 使用场景: 适用于 ZIP 格式的压缩文件,尤其在需要将文件分割成多个部分时使用。
    • zip.001 型分卷:

      • 格式: zip.001, zip.002, zip.003, ...
      • 描述: 另一种 ZIP 分卷格式,分卷文件以 .zip.001、.zip.002 等为后缀。主要文件为 .zip.001,后续分卷依次编号。
      • 使用场景: 常见于一些特定的分卷工具或某些特殊需求场景下的 ZIP 分卷格式。

字典大小(Dictionary Size)

  • 定义: 压缩算法用来存储已处理数据模式的内存空间大小。字典越大,压缩率越高,但内存消耗也增加。
  • 应用: 增大字典大小可以提高压缩率,特别是在处理大文件或高度重复的数据时。

单词大小(Word Size)

  • 定义: 压缩算法处理数据的基本数据块大小。较大的单词大小可以提高压缩速度,但可能会降低压缩率。
  • 应用: 调整单词大小以平衡压缩速度和压缩率。

固实数据大小(Solid Block Size)

  • 定义: 在固实压缩模式下,将多个文件视为一个单一的数据块来压缩,通常能提高压缩率,但可能使解压缩速度变慢。
  • 应用: 适用于压缩大量相似文件,如文本或代码文件,优化整体压缩效果。

自解压程序(Self-extracting Archive, SFX)

  • 定义: 自解压程序是一种包含在压缩文件中的小型可执行文件,允许用户在没有专用解压工具的情况下直接解压缩内容。自解压程序通常用于分发软件和数据包,因为接收方只需执行文件即可解压缩内容,而不需要额外的解压缩软件。
  • 应用: 适用于需要将压缩文件分发给没有解压缩工具的用户,或在环境受限的情况下(如企业网络)确保文件能够顺利解压。

常见文件类型的压缩效果

不同类型的文件在使用压缩算法时会表现出不同的压缩效果。以下是一些常见文件类型的压缩效果分析:

  1. 视频文件(如 MP4, MKV 等):

    • 压缩效果: 较差(压缩比通常在 90% - 100% 左右,几乎无压缩效果)。
  2. 文本文件(如 TXT, JSON, XML 等):

    • 压缩效果: 极佳(压缩比通常在 10% - 20% 左右,压缩效果显著)。
  3. 游戏文件(如 Unity 打包文件,资源文件):

    • 压缩效果: 中等(压缩比通常在 40% - 60% 左右,取决于资源类型)。

压缩算法比较表格

算法 压缩效果(视频) 压缩效果(文本) 压缩效果(游戏文件) 压缩速度 (MB/s) 解压速度 (MB/s) 资源消耗 适用场景 推荐使用的 Windows 软件
Zstandard (Zstd) 差(90% - 100%) 极佳(10% - 20%) 中等(40% - 60%) 400 - 500 800 - 1000 中等,压缩时 CPU 占用较高 通用,高效存储和传输 Zstandard Command-line Tool, 7z-zstd
Gzip (DEFLATE) 差(90% - 100%) 良好(15% - 25%) 中等(50% - 70%) 100 - 150 300 - 350 适中,CPU 和内存占用适中 Web 压缩,通用文件压缩 7-Zip, WinRAR, gzip (via Cygwin)
Brotli 差(90% - 100%) 极佳(10% - 20%) 中等(40% - 60%) 100 - 250 400 - 500 压缩时高,解压时适中 Web 内容压缩,文本压缩 Brotli Command-line Tool
LZ4 差(95% - 100%) 良好(20% - 30%) 中等(50% - 70%) 400 - 600 1000 - 1500 低,CPU 和内存占用极低 实时压缩,高性能应用 LZ4 Command-line Tool, 7-Zip
LZMA (7z) 差(90% - 100%) 极佳(5% - 15%) 良好(30% - 50%) 10 - 50 100 - 200 高,压缩时 CPU 和内存占用高 长期存储,软件分发 7-Zip, WinRAR
Bzip2 差(90% - 100%) 良好(10% - 20%) 中等(50% - 70%) 50 - 100 100 - 200 高,压缩和解压时资源占用较高 需要高压缩率但速度要求不高的场景 bzip2 (via Cygwin), 7-Zip
Snappy 差(95% - 100%) 良好(20% - 30%) 中等(50% - 70%) 500 - 800 1000 - 1700 低,CPU 和内存占用极低 实时数据处理,高性能数据库 Snappy Command-line Tool

注意:此详细数据仅供娱乐参考,实际用户解压&压缩场景是非常复杂多变,以上数据只是简单说明一下各算法的特点

说明与建议

Zstandard (Zstd) 的特点

  • 高压缩比和速度平衡: Zstandard 是一种无损数据压缩算法,专为在压缩率和压缩速度之间提供良好平衡而设计,适合通用数据存储和传输。
  • 中等压缩率: Zstandard 在大多数场景下提供了良好的压缩率,尤其在文本和日志数据压缩方面表现出色。
  • 文件校验支持。Zstandard 内置了文件校验功能,默认使用 XXH64 校验和,在解压时会自动验证数据的完整性。

应用场景:

  • 数据存储和传输: 适用于需要在压缩比和速度之间找到平衡的应用,如文件备份、数据库压缩、网络传输等。
  • 数据完整性: 由于内置的校验功能,Zstandard 是那些对数据完整性要求较高的应用的理想选择。

Gzip (DEFLATE) 的特点

  • 广泛使用: Gzip 是基于 DEFLATE 算法的一种经典压缩工具,因其广泛的兼容性和可靠性在许多操作系统和应用程序中被使用。
  • 中等压缩率: Gzip 提供中等压缩率,适合大多数通用文件的压缩需求。
  • 文件校验支持。Gzip 使用 CRC32 校验码,在解压时会自动验证数据的完整性。

应用场景:

  • Web 压缩和通用文件压缩: 由于其广泛的兼容性,Gzip 适合压缩 Web 内容、日志文件以及其他需要广泛支持的文件类型。
  • 数据完整性: 内置的 CRC32 校验使 Gzip 成为需要保证数据完整性的可靠选择。

Brotli 的特点

  • Web 优化: Brotli 是一种专为 Web 内容压缩而设计的算法,提供了比 Gzip 更好的压缩率,尤其在文本压缩方面表现出色。
  • 较高的压缩率: 尤其适合压缩 HTML、CSS 和 JavaScript 等 Web 资源。
  • 文件校验支持。Brotli 内置了校验和功能,确保解压时的文件完整性。

应用场景:

  • Web 内容压缩: Brotli 尤其适合用于减少网页资源的大小,加速网页加载速度。
  • 数据完整性: 内置的校验和功能确保了数据在传输过程中的完整性。

LZMA (7z) 的特点

  • 高压缩比: LZMA 提供极高的压缩比,适合用于长期存储和软件分发。
  • 低压缩速度: 相较于其他算法,LZMA 的压缩速度较慢,但其高压缩比使其在存储和传输中占有优势。
  • 文件校验支持。LZMA 支持附带 CRC32 校验和,以确保数据完整性。

应用场景:

  • 长期存储和软件分发: LZMA 常用于需要最大限度减少存储空间的场景,如大型软件的发布包。
  • 数据完整性: LZMA 的内置校验功能使其适合对数据完整性有严格要求的应用。

Bzip2 的特点

  • 高压缩比: Bzip2 提供了较高的压缩比,适用于需要更高压缩率的场景。
  • 低压缩和解压速度: 由于算法的复杂性,Bzip2 的压缩和解压速度较慢,但它能有效减少文件大小。
  • 文件校验支持。Bzip2 使用 CRC32 校验来确保数据完整性。

应用场景:

  • 高压缩率需求: 适用于对压缩率要求高而速度要求不高的场景。
  • 数据完整性: 内置的 CRC32 校验功能确保了数据在解压时的完整性。

LZ4 的特点

  • 高速度: LZ4 是一种无损数据压缩算法,专为实现极高的压缩和解压速度而设计,特别适合需要实时数据处理的应用场景。
  • 低压缩率: 虽然 LZ4 的压缩速度极快,但它的压缩率通常低于其他更复杂的压缩算法。
  • 文件校验不支持。LZ4 在其算法设计中未包含内置的 CRC 或其他校验机制。

应用场景:

  • 数据完整性: 如果应用场景需要保证数据完整性,通常会在 LZ4 压缩前或后使用其他工具或方法(如 CRC32、MD5 校验)来校验数据的完整性。
  • 实时应用: LZ4 非常适合需要快速压缩和解压的大型数据流、日志、缓存等场景,尤其是当数据完整性由其他层级(如传输协议、文件系统)保证时。

文件校验的替代方案:

  • 外部校验: 在使用 LZ4 进行数据压缩时,建议结合使用外部工具(如 sha256sum)来生成压缩前后的校验和,以确保数据的完整性。
  • 其他压缩算法: 如果需要内置文件校验功能,可以考虑使用 zlib(gzip)或 Zstandard 等支持校验功能的算法。

Snappy 的特点

  • 高速度: Snappy 是由 Google 开发的高效压缩算法,专为提供高速度的压缩和解压缩而设计,适合大规模数据处理和传输。
  • 低压缩率: 与 LZ4 类似,Snappy 的压缩率通常低于其他压缩算法,但速度极快。
  • 文件校验不支持。Snappy 不包含内置的校验机制,意味着压缩和解压过程中不会自动验证数据完整性。

应用场景:

  • 高性能数据处理: Snappy 非常适合用于数据库压缩、实时数据流处理和大规模数据传输。
  • 数据完整性: 对数据完整性有要求的应用应结合使用外部校验工具。

文件校验的替代方案:

  • 外部校验: 使用 Snappy 进行压缩时,建议使用外部工具生成校验和,确保数据在传输和解压过程中的完整性。
  • 其他压缩算法: 如果需要内置校验功能,zlib(gzip)或 Zstandard 是更好的选择。

如何改善你的解压&压缩体验

  1. 使用合适的软件

    • 选择支持多线程的压缩软件,比如 7z。7z 软件可以充分利用 CPU 的多核性能,在压缩和解压过程中显著提升速度,尤其在处理大型文件或文件夹时,效果更加明显。
  2. 使用多核性能高的 CPU

    • 压缩和解压缩是计算密集型任务,拥有更多核心和更高主频的 CPU 可以显著提高这些任务的执行速度。如果你经常处理大量或复杂的压缩任务,升级到多核性能强劲的 CPU 是一个值得考虑的选择。
  3. 在 NVMe SSD 固态硬盘中进行解压&压缩

    • 解压和压缩涉及大量的磁盘读写操作,使用带宽更高、性能更好的 NVMe 固态硬盘 相较于 HDD 机械硬盘 或 SATA 固态硬盘 可以大幅提升速度。尤其在 7z 进行仅存储无密码压缩时,NVMe SSD 的优势更为明显,能极大地减少操作时间。

压缩软件介绍及GitHub&官方下载链接

  1. 7-Zip

    • 功能: 7-Zip 是一款开源的文件压缩和解压工具,支持多种格式(如 7z、Gzip、Bzip2、LZMA、LZ4、XZ、ZIP)。它以高压缩率和灵活选项著称,尤其在处理 7z 格式时表现出色。

    • 适用场景: 通用文件压缩,特别是需要高压缩率和灵活压缩选项的用户。

    • GitHub 下载链接7-Zip 官方下载

      匣子_7-Zip File Manager_101722503_p0.png

  2. 7z-zstd

    • 功能: 7z-zstd 是 7-Zip 的增强版,增加了对 Zstd、Brotli、LZ4 和 LZ5 等现代压缩算法的支持,提供了更灵活的压缩选项。
    • 适用场景: 需要灵活选择多种现代压缩算法的场景,如需要同时处理多种压缩任务的用户。
    • GitHub 下载链接7z-zstd GitHub
  3. WinRAR

    • 功能: WinRAR 是一个广泛使用的压缩工具,支持 RAR 和 ZIP 格式,以及 Gzip、Bzip2、7z 等格式的解压。它提供了用户友好的图形界面,支持分卷压缩、自解压、密码保护等功能。
    • 适用场景: 用户需要强大图形界面支持和广泛格式兼容性的场景,特别适合处理大型压缩文件。
    • 下载地址WinRAR 官方下载

      ぽぽっき_WinRAR girl_117366536_p0.jpg

  4. Brotli Command-line Tool

    • 功能: Brotli 工具主要用于网页内容的压缩,特别适合文本、HTML、CSS、JavaScript 文件的压缩。
    • 适用场景: Web 开发,优化网页加载时间。
    • GitHub 下载链接Brotli GitHub
  5. LZ4 Command-line Tool

    • 功能: 专注于速度的压缩工具,支持实时压缩和解压,适合需要快速处理大数据的场景。
    • 适用场景: 实时数据压缩,高性能计算,游戏开发。
    • GitHub 下载链接LZ4 GitHub
  6. Snappy Command-line Tool

    • 功能: Google 开发的专注于速度的压缩工具,主要用于高性能数据处理场景。
    • 适用场景: 实时数据处理,数据库系统,高性能数据传输。
    • GitHub 下载链接Snappy GitHub
  7. bzip2 (via Cygwin)

    • 功能: 一种较老的压缩工具,主要用于高压缩率的需求。通过 Cygwin 可以在 Windows 上使用 bzip2 命令行工具。
    • 适用场景: 需要高压缩率且不太在意压缩速度的场景,特别是在兼容旧系统时。
    • Cygwin 下载链接Cygwin 官网
  8. Zstandard Command-line Tool

    • 功能: 专为处理 Zstd 压缩格式而设计,支持多种压缩级别、流式压缩、字典压缩及多线程操作。
    • 适用场景: 高性能数据压缩,如数据库备份、日志压缩。
    • GitHub 下载链接Zstandard GitHub

如果有不正确请评论区指出,随笔闲聊不一定全部正确……

重新编辑于 - 2024-08-22 - 04:16

鲲

5566

#1

强强强!!!

以后直接放到网站帮助文档里

2024-08-20 - 16:06
Misuzu
Misuzu

1803

#2

杂鱼❤️~kun!

2024-08-20 - 16:52
#3

>7z-zstd 是 7-Zip 的增强版,增加了对 Zstd、Brotli、LZ4 和 LZ5 等现代压缩算法的支持,提供了更灵活的压缩选项。

补充一下:24版7z已经增加了对ZSTD的支持,7z-zstd作者差点就要退休了

@mcmilk commented on Jan 31

\When 7-Zip does support Zstd now, I can close this project.
These are good news ;-)\


详情见 -> https://github.com/mcmilk/7-Zip-zstd/issues/363

2024-08-21 - 04:53
kohaku