|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你希望java的IDE整合。这个是没有必要的,重要的是你理解java有多深以及怎么组织你的代码,即使没有IDE,代码照样能够编译运行的。变量|优化Java程序包括了大批的对象,我们必要懂得它们是从那里被会见的,变量存储于那边对程序的功能有明显的影响--特别是某些必要被频仍会见的变量。
我们写一个Java类,在其外部办法中界说的部分变量或对象是存储在stack(仓库)中的,且JVM是一种stack-based的,因而会见和利用stack中的数据时功能最好。而Java类的instance变量(这个类的field)和static变量是在constantpool(常量池)中存储和失掉会见的。constantpool中保留了一切的标记援用(symbolicreferences),指向一切型别(types)、值域(field),和每一个型别所利用的一切函数(mothods)。会见instance和static变量时,因为它们寄存于constantpool中,以是JVM必要利用更多更耗时的操纵码(剖析程序天生的bytecode能够看出来)来会见它们。
上面给出一段代码示例,对照后申明怎样尽量地利用stack变量:
packagetest;
publicclassStackVars{
privateintx;//instance变量
privatestaticintstaticX;//static变量
publicvoidstackAccess(intval){//会见和操纵stack变量j
intj=0;
for(inti=0;i<val;i++){
j+=1;
}
}
publicvoidinstanceAccess(intval){//会见和操纵instance变量x
for(inti=0;i<val;i++){
x+=1;
}
}
publicvoidstaticAccess(intval){//会见和操纵static变量staticX
for(inti=0;i<val;i++){
staticX+=1;
}
}
}
经测试,发明运转instanceAccess()和staticAccess()办法的工夫约莫不异,但却比运转stackAccess()办法慢了2~3倍。因而我们对instanceAccess()、staticAccess()两个办法的代码作以下调剂,以失掉更快的功能:
publicvoidinstanceAccess(intval){//会见和操纵instance变量x
inttempX=x;
for(inti=0;i<val;i++){
tempX+=1;
}
x=tempX;
}
publicvoidstaticAccess(intval){//会见和操纵static变量staticX
inttempStaticX=staticX;
for(inti=0;i<val;i++){
tempStaticX+=1;
}
staticX=tempStaticX;
}
改良的地方就是将instance和static变量放到轮回以外,而用一个stack变量来完成屡次部分运算,最初再将这个stack变量的值传回instance或static变量,从而进步了代码的功能。
接待给出批评。
不得不提一下的是:.net是看到java红,而开发出来的工具。 |
|