网上说Java的性能已经达到甚至超过C++,是真的吗?

做过4年的RVM java虚拟机的实现。实际上,java的动态编译引擎的效率和效果,的确和大部分c++编译器编译出来的指令,在执行效率方面差不多。

额外引入的性能损失在GC(垃圾收集)引擎上,不论是分代式垃圾收集器还是marksweep等,这些引擎从监视对象创建,到扫描并回收对象,都需要消耗超过20%的性能。这就是java实际执行看起来比c++慢的原因。

但垃圾收集本身给java语言引入了内存管控的安全性,使得java语言代码,绝不会出现c++代码可能出现的缓冲区溢出,double free等很多致命的软件错误。这也是性能换安全的一个语言设计的平衡吧。

说JAVA性能超越C++那是吹牛逼骗不懂的人的。通俗点解释二者的差距,开发游戏用JAVA就足够了,尤其是手机游戏!但是开发证券交易系统等大型工程项目还得是C++上!凡是熟练掌握C++的人那都是真正的高手!从程序语言难易角度排序,最难的是C++,下来是JAVA,再下来是Python。剩下什么C,PHP,BASIC等都上不了台面不入法眼!

C++可以直接编译成计算机可识别的机器语言,Java需要通过JVM转换,也就是需要JVM中间层才能转换成计算机可运行的代码,从这个角度上看,你觉得JAVA的性能可能超过C++吗。

另外,据说JAVA的JVM都是C语言开发的,而C++又是C语言的升级版,我记得之前我曾经研究过,JAVA大概比C++慢30%左右吧,这个你可以自己去做下测试就知道了。

要是真的,那就应该用JAVA重写一个JAVA虚拟机,替换掉c++写的JAVA虚拟机

用纯java完全实现一个图像解码程序试试?比如jpeg。

记住,不要用java系统库(系统库是C封装的),纯java代码实现,看看速度差几倍。

相关代码参考