java是解释执行的,这应该是它速度慢的原因之一
解决方案 »
- java类加载问题
- select里的值传递问题
- 我在文本框中输入"0.4,0.18,0.1,0.1,0.07,0.06,0.05,0.04",想让 double weight[]={0.4,0.18,0.1,0.1,0.07,0.06,0.05,0.04};
- 为什么用ctrl+enter会提交两遍??!!谢谢各位
- 3级菜单如何加
- 正在学习JAVA碰见一道题,迷惑。
- 如何比较两个对象(比如ArrayList)的值是否相等?
- 如何读取jar文件里的一个文件。
- 菜问题
- 求教,tomcat和resin的比较,哪个功能强
- borland appserver 下 idl2java.exe
- 今天做了一个猜数字的小游戏,很难猜的,如果是高智商的可以试试,我怎么也猜不着,来者给分,
不象vc,vb中已经在本机作出本地代码.即exe,dll文件.但这些文件一旦换一个系统,例如从windows 到UNIX,就根本不能运行.
具体内容可以看一看编译原理,大学的课程.
1。java程序经过编译后形成的bytecode相当于CPU的汇编指令
2。bytecode的执行是在堆栈中,而CPU指令的执行在寄存器(硬件)中。
举个简单的例子:两个数相加。
java中对应的bytecode为"iadd",CPU指令为"add",iadd的功能是把堆栈(一块内存)顶部的数弹出来并与此时的堆栈顶部相加,源码是
long temp = popStack();
*(long*)sp += temp;
也就是说,取操作数、相加、放回结果都是用软件实现的。
而其它未用虚拟机的程序(C)执行时已经是在执行机器代码了,同样一个add,这里是把操作数从内存装入寄存器、然后使用加法器相加,最后放回内存,都是用硬件实现的。
一个用软件执行程序、一个用硬件,也就不难理解为什么java程序会慢了。