Java为什么永远比C,C++慢??

如题所述

  首先,java字节码的执行是通过jvm(java虚拟机)来执行的,而jvm基本上是用c语言实现的。这就相当于多了一个中间层,用c、c++编写的程序执行是(可执行文件--->机器),而用java编写的程序执行是(字节码--->jvm--->机器)。另外,jvm本身的一些机制如垃圾回收,类的查找与加载等也是有时间消耗。
  不过任何事情都是有两面性,java可能比c、c++慢,但是这个平台为我们屏蔽了很多机器和操作系统的差异性,我们编写java代码基本不用太多考虑机器和操作系统本身的东西。并且有很好的可移植性。比如你在Windows下写的java代码,基本上只需要做很少的修改就可以在Linux下运行了。
  最后说点题外话,那些说java可以比c、c++快的人应该都是java的死忠,我相信实现同样的功能有高手可以用java写的程序比很多人用c、c++写的程序要快,但是和同样水平的c、c++程序比,那么在程序性能上还是不会有优势的。而那些开口闭口就说java慢的像蜗牛的人估计也没有写过几行java代码,实现同样功能他用c、c++写的也未必有别人用java写的程序跑的快。
  所以,没有太多的必要比较语言的快慢,重要的是语言他适合用来做什么,存在的既是合理的,一种语言既然存在那么必然有他适用的地方,不然你可能没有听说过这门语言。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-16
因为java是解释语言,C,C++是编译语言。 编译语言在编译的时候会编译为机器语言,比较花费时间,但是运行的时候很快。然而解释语言编译的时候不是编译为机器语言,而是转化成一种中间语言,java是字节码文件(class文件),然后用虚拟机来解释class文件,当然速度就比直接运行机器语言慢好多。
第2个回答  2013-06-16
主要原因有2个:1)Java不是微软平台的开发软件,所以一套SDK完全不一样,这就意味着Java程序先要启动java运行环境,然后运行java程序。显然耗时肯定大于土生土长的C或者C++。2)另外,C或者C++的编译器编译的程序近似于汇编程序,但是Java编译器编译的程序因为有类库等原因,因此编译程序远远大于C或者C++的,也是导致缓慢的原因。
第3个回答  2018-12-28

因为JVM是用C/C++写的,这就意味着想要运行Java,就必须先跑起C/C++。

换言之,Java通过JVM编译成C/C++,哪比得上直接写C/C++。这不是贬低Java,有时C/C++开发难度就是很大,很多情况不得已而为之。比如0与1可以实现任何操作系统,但是在开发者的角度上是不可为的

第4个回答  2013-06-16
C和C++离计算机底层更近,所以比Java运行来的快

java为什么没有c\/c++运行速度快
1、Java不一定效率就比C++低。一般情况下,Java的效率和C++处于一个数量级,少数情况下Java会比C++更快。2、现在根本没有所谓的解释性语言和编译性语言之分。Java一样能通过jaotc,gcj或者Excelsior Jet之类的编译器编译成机器码,C++一样能够通过解释器解释执行 3、Java虚拟机的主流实现Hotspot里自带一个...

Java为什么永远比C,C++慢?
\\x0d\\x0a不过任何事情都是有两面性,java可能比c、c++慢,但是这个平台为我们屏蔽了很多机器和操作系统的差异性,我们编写java代码基本不用太多考虑机器和操作系统本身的东西。并且有很好的可移植性。比如你在Windows下写的java代码,基本上只需要做很少的修改就可以在Linux下运行了。\\x0d\\x0a最后说...

为什么我觉得java比C\/C++难
我觉得那是你对c\/c++了解的没有java多导致的。语言之间没有什么难不难的。java比较偏向应用,能够实现功能是最重要的。但是c\/c++要想更好的实现功能就需要了解计算机的底层体系结构,在内存排布、cpu调度等方面都要有一定的知识,在写程序的时候要有针对性的进行一定的优化。像是内存管理,java虚拟机自...

c++和java相比较c++难吗?
一般来说,C++相对于Java更加底层和复杂,因此有些人可能认为C++更难。然而,Java有自己的一些复杂概念和特性,因此也有人认为Java更难。最终,选择哪个语言要根据个人的兴趣和需求来决定。

c++教程和java哪个好学?
2、当然是c语言更加难学。因为c语言更偏向于底层。而java学习起来更加轻松。而且也和c语言c++有一定关系。3、JAVA还是比较好学,在以后的求职过程也是应用比较多的。4、c语言更容易。C++组报名量很大,占了一大多半,但发奖是按比例来的,所以c++选手拿省一相对来说是有难度的,国赛也是。Java组就很...

java和c++性能对比(java和c++效率差异)
Java为什么永远比C,C++慢?\\x0d\\x0a不过任何事情都是有两面性,java可能比c、c++慢,但是这个平台为我们屏蔽了很多机器和操作系统的差异性,我们编写java代码基本不用太多考虑机器和操作系统本身的东西。并且有很好的可移植性。而C++的“充分、自由的利用底层特性”优势,造成了程序只能在有他所使用的...

Java为什么比C++慢?以及如何提高Java效率
java为啥慢? 1、java的分配内存java只把内嵌类型分配到堆栈上面,所有Object类型都分配到堆上面。c++可以把局部变量都分配到堆栈上面。显然,根据已有测试结果,访问堆栈的速度要远高于堆的速度。 启示1:c++不要返回structure,可以用引用先传入返回对象;启示2:java对象不要随便抛弃,尽量延长其生命周期;...

java和c哪个效率高(java和c差别大吗)
2、这两种语言都是当今热门语言,但是从应用场景和就业前景来看,Java语言具有一定的优势,对于新手来说学习起来会更简单。从学习难度来看,Java语言要比C语言简单一些。3、所以从语言的叫来看它不会被淘汰,但是能提供的岗位会偏少数,所以好多人C++程序员换工作不太好找,所以建议选择Java吧,有C++的...

java和c++的效率(java和c++哪个厉害)
1,运行速度较C慢,程序越大越明显 2,难与底层操作系统和硬件打交道,用C可以轻而易举获取操作系统硬件信息,java则不能。Java和c++编写的程序那个的效率要高一些Java的编写效率一般高一点,Java提供的功能多一点,所以相对来说写的代码可以少一点;C++的运行效率要高于Java,实现同样的功能,C++的...

为什么java很少用来开发pc上的软件
1、环境依赖问题,JAVA的软件要依赖JRE\/JDK,无论在Windows还是Linux平台上基本都不是预装的,而且要命的是这玩意儿体积还比较大;2、JAVA在桌面应用程序方面确实有点弱,而个人PC现在离不开桌面应用;3、运行速度确实要略慢于native code的C\/C++,当然也没慢得那么离谱,不过内存占用确实要大很多;

相似回答