【发布时间】:2014-01-11 13:21:38
【问题描述】:
我用 java 和 c 语言制作了两个相当小的应用程序。该应用程序是一款金融计算器 (Black & Scholes),可以在给定参数资产价格、执行价格、波动率、时间和利率的情况下计算看涨和看跌价格。
不知何故,我希望这些应用程序的大小以千字节为单位大致相同 - 但当我发现 c 文件要重得多时,我感到很惊讶:
c-program (exefile): 450 KB
java-program (jar): 11.7 KB
也就是说,当 c 程序接近 o.5 MB 时,jar 文件只有 11.7 KB。
这怎么解释?
(第一张图是 c-app,最后一张是 java app)
【问题讨论】:
-
您忘记将 JVM 的大小添加到您的 java 代码中。 (以及 C 代码所需的 DLL 大小。)
-
正如其他回答都无法理解的那样,您没有进行公平的比较。在大多数程序中,需要考虑的远不止二进制文件的大小。不仅是使该二进制文件工作所需的运行时,不仅是所需的动态链接库,而且即使比较两个都以
c开头的二进制文件,在没有限定条件的情况下也是不公平的,因为该文件可以包含执行不需要但存在的内容协助调试 - 制作不反映实际所需代码大小的非常不同的文件大小。 -
为了进行更有意义的比较,您应该尝试打包这两个应用程序,使每个应用程序都可以安装在目标系统上而无需安装任何第三方软件(即全新的 Windows 安装),然后比较两个安装包的大小。请注意,对于 GTK 版本,您需要在安装程序中提供 GTK,对于 Java 版本,您需要在安装程序中提供 JVM。
标签: java c memory exe executable-jar