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写的程序跑的快。
所以,没有太多的必要比较语言的快慢,重要的是语言他适合用来做什么,存在的既是合理的,一种语言既然存在那么必然有他适用的地方,不然你可能没有听说过这门语言。
不过任何事情都是有两面性,java可能比c、c++慢,但是这个平台为我们屏蔽了很多机器和操作系统的差异性,我们编写java代码基本不用太多考虑机器和操作系统本身的东西。并且有很好的可移植性。比如你在Windows下写的java代码,基本上只需要做很少的修改就可以在Linux下运行了。
最后说点题外话,那些说java可以比c、c++快的人应该都是java的死忠,我相信实现同样的功能有高手可以用java写的程序比很多人用c、c++写的程序要快,但是和同样水平的c、c++程序比,那么在程序性能上还是不会有优势的。而那些开口闭口就说java慢的像蜗牛的人估计也没有写过几行java代码,实现同样功能他用c、c++写的也未必有别人用java写的程序跑的快。
所以,没有太多的必要比较语言的快慢,重要的是语言他适合用来做什么,存在的既是合理的,一种语言既然存在那么必然有他适用的地方,不然你可能没有听说过这门语言。
2013-06-16
展开全部
因为java是解释语言,C,C++是编译语言。 编译语言在编译的时候会编译为机器语言,比较花费时间,但是运行的时候很快。然而解释语言编译的时候不是编译为机器语言,而是转化成一种中间语言,java是字节码文件(class文件),然后用虚拟机来解释class文件,当然速度就比直接运行机器语言慢好多。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-16
展开全部
主要原因有2个:1)Java不是微软平台的开发软件,所以一套SDK完全不一样,这就意味着Java程序先要启动java运行环境,然后运行java程序。显然耗时肯定大于土生土长的C或者C++。2)另外,C或者C++的编译器编译的程序近似于汇编程序,但是Java编译器编译的程序因为有类库等原因,因此编译程序远远大于C或者C++的,也是导致缓慢的原因。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2018-12-28
展开全部
因为JVM是用C/C++写的,这就意味着想要运行Java,就必须先跑起C/C++。
换言之,Java通过JVM编译成C/C++,哪比得上直接写C/C++。这不是贬低Java,有时C/C++开发难度就是很大,很多情况不得已而为之。比如0与1可以实现任何操作系统,但是在开发者的角度上是不可为的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-16
展开全部
C和C++离计算机底层更近,所以比Java运行来的快
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询