淘先锋技术网

首页 1 2 3 4 5 6 7

的确,不可否认,Java运行效率上比C/C++是要慢一些,但随着JVM/JIT的不断升级优化,这种速度上的差异会越来越小。

那为什么说Java比C/C++运行效率上要慢呢?且听我说:

1、Java是解释型语言、C/C++是编译型语言:

C++可以理解为是C语言的升级扩展版本,C/C++的程序编译出来的是机器码,可以被CPU直接加载执行的;而Java编译出来的是字节码,然后要通过JIT编译器“翻译”为机器码,然后再被JVM加载执行。Java中间多了个翻译过程。

两种语言的执行过程大概如下:

  • Java:
    程序》编译》字节码》JVM加载处理》机器码》执行

  • C/C++:
    程序》静态编译器》机器码》执行

2、Java其实是运行在JVM(虚拟机)上的:

Java的跨平台其实靠的就是与系统无关的字节码与JVM来实现的,JVM可以理解为是一个虚拟机系统,Java程序是跑在JVM上面的(JVM底层是用C实现的)。所以Java的性能还受JVM的配置影响。

而C/C++编译的程序是不需要跑在虚拟机上的。

3、Java语言特性带来的性能开销:

Java采用的是动态链接、C/C++采用的是静态链接,所以两者性能上差距是有的。

另外JVM还会进行其它一些操作,如:字节码加载、类型检测、GC垃圾回收、类型转换等等,这些操作也是要耗时的。


综上,Java运行效率比C/C++要慢一点,是存在的,但随着JVM及JIT的不断优化,这种速度上的差异只会越来越小。另外,Java是牺牲了部分性能来换取“一次编写、到处运行”的跨平台实现,也是值得的。