繁体   English   中英

Java 1.6与C ++的性能如何?

[英]Performance of Java 1.6 vs C++?

使用Java 1.6,我们可以说Java 1.6的性能几乎等同于C ++代码,或者与C ++相比,Java的性能方面还有很多需要改进的地方吗?

谢谢。

Debian喜欢对这类事情进行基准测试 在他们的例子中,似乎Java的速度大约是C ++的一半,并且消耗的内存是C ++的2-18倍。

编写良好的Java程序永远不会像编写良好的C或C ++程序那样快。 虚拟机是一种不可减少的开销。 但是,大多数代码编写得不好。

Java是一种比C ++更简单的语言,为没有经验的程序员提供了一个更宽容的环境 - 所以如果你的程序员缺乏经验(并且便宜),那么Java可能比C ++表现得更好。

shared_ptr在C ++中提供了一个类似的宽容环境,因此它们对于没有经验的程序员或从Java迁移的程序员来说非常诱人,但是他们的性能开销与Java的垃圾收集一样糟糕或差。 我见过大型C ++程序,其中每个变量都是一个shared_ptr ,它们执行得非常糟糕。

我的意见

就个人而言,我认为大型项目需要为大部分代码选择“简单”的编程语言,而对于需要优化的部分则需要“快速”编程语言。 Java可能是“简单”语言的一个很好的选择,特别是因为目前有大量的Java程序员 - 在未来,我认为容易的语言如Python将开始接管。

如果你已经知道C ++,那么C ++是一种“快速”语言的合理选择,但我认为它过于复杂,最终会看到它被淘汰,而C将继续履行这一职责。

我希望大多数应用程序C ++的大部分时间都比Java快。

在某些情况下,某些C ++会比给定任务的Java慢。 这是非常罕见的,并且总是导致应用程序执行不佳或者应用程序的重构更加糟糕。

在大多数情况下,性能差异大大抵消了Java提供的灵活性,易用性,库的可用性以及可移植性。

在极少数情况下,性能至关重要,在Java中开发将是一个糟糕的选择<opinion> <flame off>在这些情况下,普通C通常是比C ++更好的选择</ flame> </ opinion>。

目前,性能/易用性/易于开发权衡的甜点是C#。 虽然便携性是一个很大的问题。

我发现Java表现得非常好。

但是,为什么没有人能解决我最大的抱怨?

Java使用FIVE TIMES作为执行相同工作的C ++程序的内存。 至少!

一旦它被使用, Java就会保留它

请问,为什么没有人会为使用最少量RAM的Java编写垃圾收集器? 它可以压缩堆并将内存返回给操作系统。 而不是荒谬的成堆-Xm *选项,使用所需的内存,然后将其还给

实际上我确信一些嵌入式系统JVM可以做到这一点,但桌面或服务器系统都没有。

这种内存贪婪使Java应用程序都希望表现得好像拥有整个计算机系统一样,没有人想要运行多个应用程序,并且RAM是免费且可无限升级的。

因此,无论性能如何出色,我都不会像Java中的实用程序那样编写任何内容。 只需要申请巨大的服务器应用程序。

你在开发什么课程?

将C ++与Java速度进行比较就像比较一把螺丝刀和一把锤子一样毫无意义。 在我们生活的世界中,超级计算机和烤面包机都需要编程,您需要专注于您的特定要求。

我将C ++用于在嵌入式系统上运行的硬实时软件。 我不会梦想在至少再过5年的时间里使用非常破碎的Java实时规范,希望它有望成熟。 我同样不愿意将C ++用于数据库,云访问中间件应用程序(实际上我不知道我刚刚说过什么,但我知道Java对于那种东西很有用')

你会使用没有行李箱空间的法拉利来移动你的物品吗? 你会带一辆小型货车去参加一场比赛吗?

人们必须明白,仅仅因为它们是编程语言,并不意味着它们以有意义的方式具有可比性。

不会。除非你测量它,否则你可能不会说出来。

对于大多数用途,性能通常“足够好”。 问题是您想要准确比较什么,以及您是否已应用分析器来查找和修复代码中的热点。

基于Sun的代码的JVM仍然支付了大量的启动税(我仍然想知道为什么他们不能快照并从那里重新启动)但是太阳队的方法首先是正确性,速度第二,并且花了他们10年才能达到标准。

所以答案是“这取决于”:)

对于大多数应用程序来说,几乎可以肯定编写一个C ++程序,它比java程序在程序中表现要好得多。

但是,如果程序没有针对速度进行优化,那么java可能会同样快或者更快,因为编译器/ JIT能够优化C ++环境。

基本上如果你愿意花费大量时间来理解和编写性能,你最终可能会比在java中做得更好,但是在相同的时间和精力下,java很可能会“赢”。

像往常一样,算法改进往往会产生与语言不同的差别。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM