Java程序在不同平台上以相同的速度执行吗?

时间:2019-01-09 06:18:39

标签: java

让我们考虑一个场景,并说有两种操作系统,即Windows和Linux。我已经编写了程序并对其进行了编译,并生成了一个类文件,并使用它在Windows和Linux上执行。

我的问题是:

  • 在两个操作系统中执行相同类文件的速度是否会有所不同(假设我们具有相同的硬件规格)?

我们都知道JVM本身需要在每个平台上单独实现,因此针对每个OS构建的将每个指令从JVM传递到处理器的代码都不同,对吗?因此,如果我们考虑使用小型程序,则执行速度可能不会有太大变化,但是:

  • 具有数千行代码的程序又如何呢?
  • 是否有推荐的OS JVM运行最快?
  • 如果执行速度没有差异,那怎么可能?

谢谢!

2 个答案:

答案 0 :(得分:3)

有时候Linux比Windows更快,有时甚至没有。

从内核的角度来看, Linux内核比Windows快,因为:

Linux内核是大内核,它包含您所知道的所有操作系统,驱动程序,文件系统,内存管理,任务调度程序,所有内容都在同一内核空间中,它们之间的通信既简单又成本低。 但是Windows NT内核是微内核,它仅包含OS所需的基本功能,其他功能不在同一个内核空间中,它们需要IPC(进程间通信)相互通信,这与Linux内核相比非常昂贵。 在某些GUI方面,Windows比Linux快,例如游戏。

由于Linux的X窗口系统的设计旨在灵活,因此失去了一些性能。好消息是Wayland项目正在改善这种情况。

答案 1 :(得分:1)

给定OS的JVM必须能够根据JVM规范运行Java字节码并实现标准Java库。因此,如果从一个操作系统到另一个操作系统的JVM性能存在差异,则这些差异将由JVM和/或标准类库的实现方式差异引起。可能发生的地方可能是图形处理,异步I / O等。

  1. 行数没有任何意义。
  2. 我不知道,但这取决于程序
  3. 如果速度没有差异,则程序的热点不会进行很多系统调用。

例如,如果您的代码主要是处理数字,那么它在各个操作系统之间不应有性能差异。