大家好,今天小编关注到一个比较有意思的话题,就是关于java比c语言慢的问题,于是小编就整理了2个相关介绍j***a比c语言慢的解答,让我们一起看看吧。

  1. java软件启动为什么那么慢呢?能改吗?
  2. 为什么说Java比C / C++ 慢?

j***a软件启动为什么那么慢呢?能改吗?

1、j***a是解释性语言,它不像C++那样直接被译为可执行的机器代码运行。而是通过虚拟机运行字节码。也就是语言运行的时候有间接性。

java比c语言慢-java比c语言慢多少倍
(图片来源网络,侵删)

2、为什么要有虚拟机呢?因为j***a最重要的优势和特点之一就是可移植性。同样的字节码,配上不同的虚拟机,就能在单片机啊,PC啊,服务器等各种操作系统和硬件环境下运行。所以牺牲一点点性能是值得的。

3、并且,随着现在硬件水平的提高,j***a的性能瓶颈也被越来越缩小,所以不能说j***a运行速度很慢,只是适用的情况不同罢了。在大型网站,平台等的背后,j***a可以发挥它的用武之地,并且保持让人满意的性能。

java比c语言慢-java比c语言慢多少倍
(图片来源网络,侵删)

4、在J***A页面,点击所有J***A下载,在里面windows脱机27.7MB,然后会提示有正在运行的可能是J***A程序,你点关闭继续进行。可能你会看到什么都没有,实际正在安装,你看安装所在文件夹就知道。相当神速,绝对不会显示还有96小时以上。 -------河南新华

为什么说J***a比C / C++ 慢?

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

java比c语言慢-java比c语言慢多少倍
(图片来源网络,侵删)

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

1、J***a是解释型语言、C/C++是编译型语言:

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

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

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

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

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

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

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

3、J***a语言特性带来的性能开销:

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

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


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

1.C++是编译型语言,j***a是解释型语言,普遍来讲,编译型语言要比解释型语言速度快。

2.C++是在C语言的基础上增加了新的语法和面向对象的机制,更加接近C语言,也就意味着更加接近底层硬件,越接近于硬件,运行速度越快。

3.j***a是纯面向对象的语言,实现了大量类的封装,体系比较庞大,对于j***a程序员来说,底层硬件可以说是透明的,所以想要优化效率是不容易的。

4.j***a慢于C++的一个重要原因就是j***a是运行在j***a虚拟机上,虚拟机的也需要时间开销。

5.总的来说,C++的效率大概是j***a的3到4倍,但是现在CPU的速度已经很快了,这种几倍的效率问题CPU已经可以完全屏蔽了。


到此,以上就是小编对于j***a比c语言慢的问题就介绍到这了,希望介绍关于j***a比c语言慢的2点解答对大家有用。