java执行速度相比较慢的原因

本文主要说明java和C++两种语言的执行速度差异较大的原因(借鉴自维基百科)。

java是解释性语言,java程序在运行时,不像C++那样直接被编译成机器码进行执行,而是类加载器从类路经中加载相关的类,然后java虚拟机读取该类文件的字节码,执行相应操作。

C++编译的时候直接将程序编译成本地机器码.一般来说java程序执行速度要比C++10-30倍(java虚拟机可以将频繁使用的字节码直接转化成为机器码,即采用即时编译器,在热点代码的执行过程中与C++相差无异(从而提高执行速度);上面提到的数据很久远了,java在最近几年更新较快,数据有待证实),即使Java采用just-in-time compiling (读取类文件字节后,编译成本地机器码)技术,速度也要比C++慢好多(这是为什么呢?可能与后面的几种原因有关)

java程序有要从网络上加载类字节,然后执行,这也是导致java运行速度慢的原因

在程序运行过程中,java虚拟机要检测数组是否越界,C++中则不检测.

java中所有的对象都创建在堆(Heap)中,没有对象被创建在栈(stack),C++有的对象和变量是创建在stack中的;

java在运行过程中检测对象的引用是否为空,如果引用指向都空指针,且执行某个方法时会抛出空指针异常

java运行时对类型检测,如果类型不正确会抛出ClassCastException异常.

java的垃圾回收机制较C++由程序员管理内存效率更低.

java中的原始数据类型在每个操作系统平台长度都是相同,C++这些数据类型长度是随操作系统的不同而不同,所以java在不同操作系统上执行时有个转化过程.

javaStringUNICODE编码,java要操作一个 ASCII string,C++效率上相对要低一些.

java中采用的是动态链接


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值