gpt4 book ai didi

compression - 我们应该使用什么压缩格式;我们应该放下 DEFLATE (.zip) 休息吗?

转载 作者:行者123 更新时间:2023-12-04 01:59:36 25 4
gpt4 key购买 nike

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果你觉得这个问题可以改进并可能重新打开,visit the help center 寻求指导。




11 年前关闭。




由于大多数 Linux 发行版都放弃了 gzip 和 bzip2 以支持 LZMA2 来压缩它们的包,以及许多平台的许多开源实现,我想知道:我们不应该把 DEFLATE 和 .zip 格式(不幸地一遍又一遍地混为一谈)休息一下,并继续使用其他现代方式分发我们的(源)包?

GNU tar 支持 J 开关,它使用 xz(另一个 LZMA2 压缩器)作为过滤器:

$ tar cJf foo.tar.xz foo/

但是,我倾向于使用 7z(p7zip 实现)和它的 friend 7za 在 Linux 下创建文件。我仍然使用“避免 tar-bombs”范式,在创建文件时,这意味着该文件中有一个目录,因此从命令行提取不会导致当前目录中的文件溢出(这是 Linux 上的标准操作方式,例如 tar ,但在 Windows 下似乎不太常见)。

无论如何,似乎由于在包(例如,Fedora RPM 和 Ubuntu DEB)中的使用,以及 tar 等工具的过滤器,LZMA2 是 bzip2 之后使用的“下一个最好的东西”。它具有很高的压缩率(在标准设置中远远超过 bzip2)并且速度也非常快(压缩比 gzip 稍慢,

我自己做了一些基准测试,但我想把重点放在一些更广泛的基准测试上:
  • compressionratings.com 基于评级的基准测试
  • maximumcompression.com 基于效率的基准测试

  • 现在,您会注意到,作为引用实现的 7-zip 并没有出现在第一位。然而,Freearc 使用它自己的 .arc 格式,该格式并不真正具有跨平台能力,并且与 80 年代的旧 ARC 不兼容。 nanozip 不是开源的,这是一种低迷,但重要的是算法,而不是存档器!

    无论如何,现在 7-zip 及其衍生实现 ( xz) 的性能不再是问题,压缩率不言而喻,我想将我的源包分发为 .7z.tar.xz 文件。然而,我面前有两个障碍,我似乎无法克服:
  • WinRAR 的拥护者
    不要误会我的意思,我对 WinRAR 或其用户没有怨恨,只是我不能真正在 Linux 上制作 RAR,而且没有必要,因为我们有免费的 LZMA2 工具。正如我所说,自从成为分发包的一个组成部分后,它可以在任何现代分发版上使用。由于制作 .7z 所需的时间与制作 .rar 的时间差不多,而且 LZMA2 文件通常更小,我不明白为什么不使用 7-zip。
  • tar 文件必须是 zip 或 bzip2,没有异常(exception)
    这是一个艰难的。为什么这么多人对 gzip 印象深刻?甚至 bzip2 大部分时间也没有看到太多使用。诚然,gzip 速度很快,当涉及到按需压缩(例如在 Web 服务器中)或创建大型镜像备份时,这是一个很好的点。但是分发软件呢? LZMA2 非常不对称。虽然压缩需要时间,但解压速度非常快。

  • 好的,现在我的问题来了:

    既然 LZMA2 可以说是下一个更好的压缩算法,为什么人们不跳上火车呢?为什么人们仍然使用 WinRAR,它是专有的,压缩率更差,并且没有移植到 Linux(除了 unrar ,但你显然不能用它创建文件)。为什么 Tarball 仍然主要是 gzip 压缩的?

    有没有办法说服人们转向更新、可靠的存档格式,这不仅是跨平台的,而且是免费的?当我给某人一个以 .7z 结尾的文件时,他们往往不知道如何处理它,这会改变吗?

    哦,这是我自己做的小基准。我到处都使用默认设置:
    11837440 GNUtar_TAR.tar
    10657984 Arc_ARC.arc
    9632524 PA2010_TAR_BZip2.tar.bz2
    9536967 PA2010_LHA_Frozen5.lzh
    9510148 PA2010_ZIP_BZip2.zipx
    9490211 GNUtar_TAR.tar.bz2
    9467242 PA2010_LHA_Frozen6.lzh
    9463630 7-zip_ZIP_BZip2.zip
    9437520 7-zip_7-ZIP_BZip2.7z
    9398798 Arj_ARJ.arj
    9373435 GNUtar_TAR.tar.gz
    9370456 PA2010_BlackHole_Deflate.bh
    9369621 Lha_LHA_Frozen6.lzh
    9367712 PA2010_ZIP_Deflate.zip
    9364237 PA2010_TAR_gzip.tar.gz
    9360248 PA2010_Cabinet_MsZip.cab
    9303923 7-zip_ZIP_Deflate.zip
    9215279 7-zip_ZIP_Deflate64.zip
    9189365 PA2010_ZIP_PPMd.zipx
    9060663 PA2010_7-ZIP_PPMd.7z
    8931280 PA2010_Cabinet_LZX.cab
    8847427 7-zip_7-ZIP_PPMd.7z
    8803350 PA2010_ZIP_Optimized.zipx
    8803350 PA2010_ZIP_Wavpack.zipx
    8802850 PA2010_ZIP_LZMA.zipx
    5812491 FreeArc_7-ZIP.arc
    5789853 7-zip_7-ZIP_LZMA.7z
    5789853 PA2010_7-ZIP_LZMA.7z
    5789024 GNUtar_TAR.tar.xz
    5782637 FreeArc_UHARC.arc
    5770969 FreeArc_CCM.arc
    5739697 Fp8_5.fp8
    5718865 Fp8_8.fp8
    5685234 Paq8px_5.paq8px
    5677662 Paq8kx_5.paq8kx
    5644422 Paq8px_8.paq8px
    5609608 Paq8kx_8.paq8kx

    (以字节为单位的大小;文件名: Archiver_Format_Algorithm.Extension )

    这组填充由包含 DOS 安装的磁盘镜像组成:
    1474979 disk01.144
    1474979 disk02.144
    1474979 disk03.144
    1474979 disk04.144
    1474979 disk05.144
    1474979 ldisk01.144
    1474979 ldisk02.144
    1474979 ldisk03.144
    24325 diskcopy.com

    (以字节为单位的大小)

    最佳答案

    过去 bz2 不是 tarball 的选项。然后有人在 GNU Tar 中添加了一个选项来创建和读取 bz2 文件,很快这种格式开始传播。所以答案是:

    如果您相信 LZMA,那么将补丁提交给自由软件基金会(连同所有适当的文书工作),您将使世界变得更加美好。

    关于compression - 我们应该使用什么压缩格式;我们应该放下 DEFLATE (.zip) 休息吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3589746/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com