黑马程序员技术交流社区

标题: 为什么java会比c、c++要慢? [打印本页]

作者: zhengzhaozhao    时间: 2014-10-22 09:43
标题: 为什么java会比c、c++要慢?
为什么java会比c、c++要慢?

作者: xiaochongbojue    时间: 2014-10-22 09:49
因为java是解释型的语言,c语言的话编译链接玩之后可以直接在操作系统下运行,和cpu有直接联系,所以可移植性差一点。java是在虚拟机上运行字节码文件,速度慢一些,但是却做到了平台无关性。移植性很好。
作者: zjy519893509    时间: 2014-10-22 15:52
  要说这一点必须先谈谈c++和java不同的对象创建于生命期的管理措施。C++认为效率控制是最重要的,所以给程序员提供里选择的权利。为了追求最大的执行速度,对象的存储空间和生命周期可以再编写程序时确定,这可以通过将对象至于堆栈或静态存储区来实现。这种将存储空间分配和释放置于优先考虑的为证,在某些情况下是很有价值的,但同时也牺牲了程序编写的灵活性。
      Java默认采用的是动态内存分配方式。所谓动态创建,既知道程序运行时才知道需要多少个对象,它们的生命周期日和,以及它们的具体类型是什么?当程序员需要一个对象的时候,就造就在堆中创建。由于存储空间是在运行时被动管理的,所以需要大量的时间在堆中分配存储空间,这可能要远远大于堆栈中创建存储空间的时间。
     在就存储空间堆栈中创建存储空间和释放存储空间通常个需要一条汇编指令即可,分别对应将栈顶指针向下移动和将栈顶指针向上移动。而创建堆存储空间的时间依赖于存储及机制的设计。
    从本质上来说,C++的运行效率确实应该比java更高,但在实际过程中,主要还是取决于程序员对程序结构的把握!
    新人求关注!!!
作者: 土突突    时间: 2014-10-22 22:59
xiaochongbojue 发表于 2014-10-22 09:49
因为java是解释型的语言,c语言的话编译链接玩之后可以直接在操作系统下运行,和cpu有直接联系,所以可移植 ...

java是编译型




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2