我在小型Windows桌面上开发了一款Java应用程序,用于解析XML文件。我做了一个可执行的jar包,并在非常强大的Windows服务器上运行它。该服务器拥有2个物理Xeon处理器,每个处理器有8个核心,时钟频率为2.7 GHz,50GB RAM和7200 RPM硬盘。当我启动应用程序时,机器处于空闲状态,我很确定没有其他应用程序与我共享该机器。
后来,出于好奇心,我在我的Macbook Pro上运行了这个可执行文件,我的个人电脑是Core i7,时钟频率为2.2 GHz,4 GB RAM和5400 RPM硬盘。
令人惊讶的是,这个应用程序在我的较弱的个人电脑上运行速度是服务器的两倍。它的输入和输出都是相同的,没有IO,只是读取XML并解析它们,我在终端上打印的只有开始时间、结束时间和最终结果,只有一行。
我非常好奇这种显著的性能差异背后的原因。特别是从硬件层面来看,这个较弱的机器怎么可能比服务器更快呢?是操作系统更好地处理了硬件吗?还是JVM工作得更好了?
后来,出于好奇心,我在我的Macbook Pro上运行了这个可执行文件,我的个人电脑是Core i7,时钟频率为2.2 GHz,4 GB RAM和5400 RPM硬盘。
令人惊讶的是,这个应用程序在我的较弱的个人电脑上运行速度是服务器的两倍。它的输入和输出都是相同的,没有IO,只是读取XML并解析它们,我在终端上打印的只有开始时间、结束时间和最终结果,只有一行。
我非常好奇这种显著的性能差异背后的原因。特别是从硬件层面来看,这个较弱的机器怎么可能比服务器更快呢?是操作系统更好地处理了硬件吗?还是JVM工作得更好了?