是否存在Java与C ++的真实基准?

时间:2013-10-18 08:08:24

标签: java c++ performance benchmarking

在我提出问题之前,请注意这个问题不是:

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

这个问题不征求意见,它征求事实 - 数字。

许多基准测试,例如https://days2011.scala-lang.org/sites/days2011/files/ws3-1-Hundt.pdfhttp://benchmarksgame.alioth.debian.org/测试合成的东西,比如Mandelbrot,或者至多是真正程序的一小部分,比如数组排序。当然,这不会产生像整个应用程序基准测试那样的代表性数字。

那么,是否存在使用真实,完整的应用程序的基准测试,例如:

  • 笔记应用程序或文字处理器
  • Google地图应用等地图应用
  • 电子邮件客户端
  • 网络服务器

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

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

2 个答案:

答案 0 :(得分:1)

简单的答案是否定的,我很想说它不是 甚至可能,至少在经济上。要做到这一点,你必须这样做 两个不同的团队实施相同的应用程序, 同时并行。即便如此:多少 差异是由于语言,以及相对多少 团队的能力等。

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

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

最后:很多真正的应用程序,包括像一个单词的东西 处理器,电子邮件客户端或Web服务器是IO绑定的;其 性能更多地取决于IO的速度而不是其他任何东西。 (对于我曾经使用过的大多数大型服务器,我们没有 甚至打扰开启优化器。尽管如此 他们是时间关键; CPU时间刚好没有 影响。)

答案 1 :(得分:-6)

Java比C ++慢,而且不可能是其他方式。 原因是C ++编译本机OS二进制代码,操作系统可以理解。 Java代码编译为由JVM执行的二进制.class文件。与C ++相比,还有一层。所以,它的速度较慢。