java - java程序在不同平台上执行速度一样吗?
问题描述
让我们考虑一个场景,假设有两个操作系统,windows 和 Linux。我已经编写了一个程序并编译了它,并生成了一个类文件,我已经使用它在 Windows 和 Linux 中执行。
我的问题是:
- 两个操作系统中执行相同类文件的速度是否会有所不同(假设我们有相同的硬件规格)?
我们都知道 JVM 本身需要在每个平台上单独实现,因此将每条指令从 JVM 传递到处理器的代码对于每个操作系统 JVM 的构建都是不同的,对吧?因此,如果我们考虑小程序,执行速度可能变化不大,但是:
- 拥有数千行代码的程序呢?
- 是否有任何推荐的操作系统 JVM 运行速度最快?
- 如果执行速度没有差异,那怎么可能?
提前致谢!
解决方案
有时 Linux 比 Windows 快,有时则不然。
从内核的角度来看,Linux 内核比 Windows 更快,因为:
Linux内核是大内核,它包括你所知道的作为操作系统的一切,驱动程序、文件系统、内存管理、任务调度程序,一切都在同一个内核空间中,它们之间的通信简单且成本低。但是Windows NT内核是微内核,它只包含操作系统所需的基本功能,其他功能不在同一个内核空间,它们需要IPC(进程间通信)相互通信,这与Linux内核相比是相当昂贵的. 在某些 GUI 方面,例如游戏,Windows 比 Linux 快。
由于Linux的X窗口系统的设计目的是灵活,因此损失了一些性能。好消息是 Wayland 项目现在正在改善这种情况。
推荐阅读
- php - 我如何在 PHP 中回显这个变量?
- android - 将数据传递给 ViewModel 时为空
- python - CNN 对猫/狗图像二元分类的准确率不比随机数好
- python - kmeans聚类后如何在图像上绘制质心?
- phpspreadsheet - 使用 Laravel Excel 在 Laravel 中设置 excel 样式
- swift - SwiftUI:如何使用@Binding 变量实现自定义初始化
- node.js - 哈希保证唯一标签
- swift - 理解 Swift + NSError - 通过这个函数的所有路径都会调用自己
- ios - 如何向 UICollectionView 动态添加新单元格?
- javascript - JS、事件发射器、回调和异步