发布网友 发布时间:2022-04-24 13:09
共5个回答
热心网友 时间:2023-10-13 21:20
首先,java字节码的执行是通过jvm(java虚拟机)来执行的,而jvm基本上是用c语言实现的。这就相当于多了一个中间层,用c、c++编写的程序执行是(可执行文件--->机器),而用java编写的程序执行是(字节码--->jvm--->机器)。另外,jvm本身的一些机制如垃圾回收,类的查找与加载等也是有时间消耗。热心网友 时间:2023-10-13 21:21
因为java是解释语言,C,C++是编译语言。 编译语言在编译的时候会编译为机器语言,比较花费时间,但是运行的时候很快。然而解释语言编译的时候不是编译为机器语言,而是转化成一种中间语言,java是字节码文件(class文件),然后用虚拟机来解释class文件,当然速度就比直接运行机器语言慢好多。热心网友 时间:2023-10-13 21:21
主要原因有2个:1)Java不是微软平台的开发软件,所以一套SDK完全不一样,这就意味着Java程序先要启动java运行环境,然后运行java程序。显然耗时肯定大于土生土长的C或者C++。2)另外,C或者C++的编译器编译的程序近似于汇编程序,但是Java编译器编译的程序因为有类库等原因,因此编译程序远远大于C或者C++的,也是导致缓慢的原因。热心网友 时间:2023-10-13 21:22
因为JVM是用C/C++写的,这就意味着想要运行Java,就必须先跑起C/C++。
换言之,Java通过JVM编译成C/C++,哪比得上直接写C/C++。这不是贬低Java,有时C/C++开发难度就是很大,很多情况不得已而为之。比如0与1可以实现任何操作系统,但是在开发者的角度上是不可为的。
热心网友 时间:2023-10-13 21:23
C和C++离计算机底层更近,所以比Java运行来的快