为什么说Java比C / C++ 慢?

 我来答
谬赐撒瑾
2019-01-23 · TA获得超过3855个赞
知道大有可为答主
回答量:3149
采纳率:33%
帮助的人:393万
展开全部

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

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

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

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

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

素朗剑琳怡
2019-06-19 · TA获得超过3701个赞
知道小有建树答主
回答量:3121
采纳率:27%
帮助的人:207万
展开全部
的确,不可否认,
Java运行效率上比C/C++是要慢一些,但随着JVM
/
JIT的不断升级优化,这种速度上的差异会越来越小

Java运行效率上比C/C++是要慢一些,但随着JVM
/
JIT的不断升级优化,这种速度上的差异会越来越小
那为什么说Java比C/C++运行效率上要慢呢?且听我说:
1、Java是解释型语言、C/C++是编译型语言:
C++可以理解为是C语言的升级扩展版本,C/C++的程序编译出来的是
机器码
,可以被CPU直接加载执行的;而Java编译出来的是
字节码
,然后要通过JIT编译器“翻译”为机器码,然后再被JVM加载执行。
Java中间多了个翻译过程

机器码
字节码
Java中间多了个翻译过程
两种语言的执行过程大概如下:
Java:
程序
》编译
》字节码
》JVM
加载处理
》机器码
》执行
C/C++:
程序

静态编译器

机器码
》执行
2、Java其实是运行在JVM(虚拟机)上的:
Java的跨平台其实靠的就是与系统无关的字节码与JVM来实现的,JVM可以理解为是一个虚拟机系统,Java程序是跑在JVM上面的(JVM底层是用C实现的)。
所以Java的性能还受JVM的配置影响。
所以Java的性能还受JVM的配置影响。
而C/C++编译的程序是不需要跑在虚拟机上的。
3、Java语言特性带来的性能开销:
Java采用的是动态链接、C/C++采用的是静态链接,所以两者性能上差距是有的。
另外JVM还会进行其它一些操作,如:字节码加载、类型检测、GC垃圾回收、类型转换等等,这些操作也是要耗时的。
综上,Java运行效率比C/C++要慢一点,是存在的,但随着JVM及JIT的不断优化,这种速度上的差异只会越来越小。另外,
Java是牺牲了部分性能来换取“一次编写、到处运行”的跨平台实现,也是值得的

Java是牺牲了部分性能来换取“一次编写、到处运行”的跨平台实现,也是值得的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
闾怡天齐敏
2020-06-02 · TA获得超过3750个赞
知道大有可为答主
回答量:3209
采纳率:31%
帮助的人:241万
展开全部
java程序和c程序都需要CPU来运行。
区别是c和c++程序编译后的可执行文件是
机器码
,cpu认识它们,可以直接加载并运行:
机器码
c程序--(编译器)-->机器码-->运行
java程序编译出来的则不是机器码而是字节码,需要由java
虚拟机
先把字节码转化为机器码,然后才能在CPU上运行:
虚拟机
java程序--(编译器)->字节码--(虚拟机)->机器码-->运行
java程序--(编译器)->字节码--(虚拟机)->机器码-->运行
java比c多了一个从字节码转化为机器码的过程,所以java运行慢。
java比c多了一个从字节码转化为机器码的过程,所以java运行慢。
所以说java是一种解释性语言,c是一种编译性语言。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式