是否有Java与C++的真实基准测试
Is there a real-world benchmark of Java vs C++?
在我开始这个问题之前,请注意这个问题不是:
- 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++相比多一层。所以,它更慢。
- 使用rdtsc进行基准测试的缺点是什么
- 对 'std::thread::_M_start_thread CMake 的未定义引用进行基准测试
- 更高效地在微控制器上对C++进行基准测试
- _mm256_load_ps调试模式下导致谷歌/基准测试的分段错误
- 二叉树基准测试结果
- 如何使用谷歌基准测试对自定义界面进行基准测试
- 谷歌基准测试,如何只调用一次代码?
- 使用 std::chrono::steady_clock 对线程/异步中的代码进行基准测试
- 谷歌基准测试结果中显示的时间没有意义
- 使用 Google 基准测试时返回值会发生什么情况?
- 如何在Qt测试框架中对信号进行基准测试?
- C/C++memcpu基准测试:测量CPU和墙时间
- 如何将参数传递给Google基准测试程序
- 如何对CUDA项目进行基准测试
- 为什么这个简单的 C++ SIMD 基准测试在使用 SIMD 指令时运行速度较慢?
- 多部分基准测试的权重是多少?
- 简单的 for() 循环基准测试在任何循环绑定下花费相同的时间
- 禁用优化后,quick-bench.com 基准测试要快得多
- Winsock本地客户服务器基准测试
- 是否有Java与C++的真实基准测试