是否有Java与C++的真实基准测试

Is there a real-world benchmark of Java vs C++?

本文关键字:真实 基准测试 C++ Java 是否      更新时间:2023-10-16

在我开始这个问题之前,请注意这个问题不是:

  • Java 比 C++ 慢(或更快)吗?
  • 为什么 Java 比 C++ 慢(或更快)?

这个问题不是征求意见,而是征求事实——数字。

许多基准测试,如 https://days2011.scala-lang.org/sites/days2011/files/ws3-1-Hundt.pdf 或 http://benchmarksgame.alioth.debian.org/测试合成的东西,如曼德博,或者充其量是真实程序的一小部分,如数组排序。当然,这不会像对整个应用程序进行基准测试那样产生具有代表性的数字。

那么,是否有一个基准测试使用真实、完整的应用程序,例如:

  • 备忘录应用或文字处理器
  • 像谷歌地图这样的地图应用程序
  • 电子邮件客户端
  • 网络服务器

它必须是你每天使用的东西 - 一个完整的应用程序,而不是一个应用程序的一小部分,如二叉树或排序数组。

任何性能测量都可以,无论是延迟还是吞吐量。谢谢。

简单的答案是否定的,我很想说它不是甚至有可能,至少在经济上是可能的。 为此,您必须使用两个不同的团队两次实现相同的应用程序,同时并行。 即便如此:有多少差异是由于语言,以及多少相对团队的能力等

最后,您无法比较"语言"的性能。充其量,您可以比较语言的表现实现,当特定程序员用于特定任务。 从某种意义上说,这就是您感兴趣的全部内容:您必须与程序员一起实现特定的应用程序具有和可用的语言实现你。 即使有你寻求的比较,它对您没有多大帮助,因为您将实施具有不同程序员组的不同应用程序(他们可能具有与程序员不同的技能组合实施基准)。 虽然不同的语言确实如此具有或多或少使优化的特征总的来说,在较大的应用中很困难(如与综合基准相反),这些往往被考虑因素大,或被其他特征抵消还影响优化:C/C++的指针语义是优化器的祸根;另一方面,优化Java将需要大量的拳击,这也不是微不足道的。 (FWIW:最容易优化的语言可能是Fortran。 不因为语言中固有的东西,但因为研究人员研究它的时间最长,许多必要的优化技术已成为主流。

如果你真的担心,你必须让程序员可供您根据模式编写自己的基准在您的应用程序中,并由您的程序员实现。

最后:很多真正的应用程序,包括单词之类的东西处理器、电子邮件客户端或 Web 服务器受 IO 约束;他们性能更多地取决于 IO 的速度,而不是其他任何东西。(对于我工作过的大多数大型服务器,我们没有甚至费心打开优化器。 尽管事实上它们对时间很紧迫;CPU 时间只是没有影响。

Java比C++慢,不能用其他方式。这样做的原因是C++操作系统可以理解的本机操作系统二进制代码中编译。Java 代码编译为由 JVM 执行的二进制.class文件。与C++相比多一层。所以,它更慢。