Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否存在Java与C+的真实基准+;?_Java_C++_Performance_Benchmarking - Fatal编程技术网

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

是否存在Java与C+的真实基准+;?,java,c++,performance,benchmarking,Java,C++,Performance,Benchmarking,在我开始提问之前,请注意这个问题不是什么: 是java慢(或更快)比C++ +? 为什么java比C++更慢(或者更快)?< /LI> 这个问题不是征求意见,而是征求事实——数字 许多基准测试,比如或者测试一些合成的东西,比如Mandelbrot,或者充其量只是一个真实程序的一小部分,比如数组排序。当然,这不会产生像对整个应用程序进行基准测试那样具有代表性的数字 那么,是否有一个使用真实完整应用程序的基准测试,如: notes应用程序或文字处理器 像谷歌地图这样的地图应用程序 电子邮件客户

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

    是java慢(或更快)比C++ +? <>为什么java比C++更慢(或者更快)?< /LI>
这个问题不是征求意见,而是征求事实——数字

许多基准测试,比如或者测试一些合成的东西,比如Mandelbrot,或者充其量只是一个真实程序的一小部分,比如数组排序。当然,这不会产生像对整个应用程序进行基准测试那样具有代表性的数字

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

  • notes应用程序或文字处理器
  • 像谷歌地图这样的地图应用程序
  • 电子邮件客户端
  • 网络服务器
它必须是你每天都在使用的东西——一个完整的应用程序,而不是其中的一小部分,比如二叉树或排序数组


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

< p> java比C++慢,它不能用别的方法。
其原因是C++编译的OS OS可以理解的原生OS二进制代码。Java代码编译成二进制.class文件,由JVM执行。与C++相比,再多一层。因此,它的速度较慢。

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

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

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

最后:很多真正的应用程序,包括一个单词之类的东西 处理器、电子邮件客户端或web服务器是IO绑定的;他们的 性能更多地取决于IO的速度,而不是其他任何因素。 (对于我工作过的大多数大型服务器,我们没有 甚至连打开优化器都麻烦了 它们是时间关键型的;CPU时间根本没有时间限制
我怀疑任何大型应用程序都开发了两种版本,一种是java编写,一种是C++编写。大多数人只是使用对特定任务更有意义的东西。为了能够对两个实际应用程序进行基准测试,他们使用相同的设计和相同的算法开发,我对此表示怀疑,但你可以成为企业家。@RamonBoza这正是问题所在。不同的语言有不同的表达方式,一组经验丰富的C++程序员,在C++中编写,往往不会选择与经验丰富的java程序员团队相同的组织,java编写。java虚拟机可以动态地重新组织基于运行时反馈的程序执行,而C++编译器则被迫在编译时选择最小的缺陷。根据您正在做的事情,动态方法可能是有利的。当然,现在代码的各个部分也被编译成Java中的机器代码。实际上,编写一个java更快的基准很容易,就像C++写得更快一样。当然,两者的性能都将取决于实现和它所做的优化。这个答案在10年前是正确的。现在的问题并不像现在那么简单。注意,问题不是java理论性能与C++的关系,而是关于基准。recommendations@omickron你认为什么无关紧要。相对性能取决于实现,显然存在Oracle java实现将优于本地C++的真实世界情况。(我认识的一位最好的编译器专家告诉我,在现实世界的问题上,静态编译的程序是不可能打败JIT编译器的。我认为他有些夸张,但其中肯定有一些道理。)最后一句话:我认为在字处理程序和电子邮件客户端上,大部分时间都是在等待用户做某件事的时候空转,所以很难在这类应用程序上输入好的“吞吐量”数字。好的,用户输入的响应时间是可以测量的,但这或多或少是你能得到的唯一一个真正好的数字。此外,这是用户对其电子邮件客户端感兴趣的唯一数字。“如果我按send,我希望程序能很快返回。”@arne同意。然而,这里更重要的是:当我按下send时,限制因素w