【问题标题】:Should jar files be compressed for desktop applications?应该为桌面应用程序压缩 jar 文件吗?
【发布时间】:2011-02-14 15:07:34
【问题描述】:

只是想知道,压缩将与桌面应用程序一起提供的 jar 文件(没有网络访问 jars)通常是否是一个好主意,解压缩是否会比文件 io 产生更大的影响。

编辑:感谢到目前为止的答案,很抱歉在这里有点不清楚。我不是在谈论将 jars 运送给客户,而是在谈论应用程序启动时磁盘上 jar 文件的最佳格式。我知道 jar 文件是 zip 文件,可以使用不同的压缩级别(或根本不压缩),我直接想知道压缩将如何改变启动性能,不仅在我的开发盒上(里面有一个快速的 SSD 磁盘,但也适用于较慢的磁盘)。

【问题讨论】:

  • java jar 的内部格式是 ZIP 存档。任何一组工具都可以与任何一种文件类型一起使用。这些文件可能是压缩的(更快的磁盘访问)或未压缩的(更少的 CPU)。得到它们时留下它们。

标签: java jar compression


【解决方案1】:

我希望答案取决于您的应用程序。但是,应该很容易通过实验确定压缩的 JAR 是否为您的应用程序提供更快或更慢的启动。只需在打开和关闭压缩的情况下构建应用程序 JAR 文件,然后比较应用程序启动时间。 (在不同的机器上尝试;例如,使用慢速磁盘、快速磁盘、SSD 和不同数量的 RAM。请记住,某些操作系统会积极缓存文件,并在您的计时测量中考虑到这一点。)

在此过程中,您还应该调查不同压缩级别(通过jar 命令选项)和使用pack200 的影响


话虽如此,我的直觉是本地安装的 JAR 压缩和未压缩之间的差异会非常小,以至于用户几乎不会注意到差异。

【讨论】:

    【解决方案2】:

    在几乎所有合理的桌面情况下,磁盘 IO 的成本都远高于压缩成本。压缩文件几乎肯定会是一场胜利。

    也就是说,一个 JAR 文件已经被压缩了。双重压缩通常是不值得的。所以我会说不,不要压缩你的 JAR 文件,因为它们已经被压缩了。

    【讨论】:

    • 我怀疑 OP 的问题与他们是否应该在交付前压缩 他们的 JAR - 而不是压缩其他人给他们的文件有关。 JAR 文件不必压缩 - 它只是一个 zip 文件,不压缩内容是非常合法的。
    • “在几乎所有合理的桌面情况下,磁盘 IO 的成本都远高于压缩成本。压缩文件几乎肯定会胜出。” - 我不确定这是真的。在具有大量内存的 Linux 机器上,文件将由操作系统缓存在内存中。读取速度(理论上)可以接近内存到内存复制的速度。
    • 我不相信文件一开始是缓存的,但是当应用程序加载了几个类时,文件数据块会在缓存中。至少包含类文件的块。
    • @Daniel - 在 Linux 机器上,如果您最近使用了存档文件,则很有可能很有可能它将全部位于缓冲区缓存中来自开始。 (这就是为什么我更喜欢 Linux 而不是 Windows 进行软件开发的原因之一。)
    • 好吧,但我们的客户通常不开发,他们倾向于运行 windows。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 2017-02-13
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多