作者LaPass (LaPass)
看板java
标题Re: [问题] 新手继承问题(非作业)
时间Sun Oct 21 02:52:38 2012
1F:→ cha122977:借问,我习惯用this.name而不用name,performance有差吗10/21 00:09
2F:推 TWTRubiks:this.name=name,是只这样吗?! 应该没差吧10/21 00:14
我用1,000,000,000次的回圈各跑了两种case几次 (WinXP, JRE6)
counter += 1 和 this.counter += 1;
时间上毫无差别
===========================================
之前有看过一本书在讲JVM优化的问题
有提到这类东西
因为那个有点深度
我没办法说的很好
所以就直接讲跳到我看过的结论:
JVM会替你搞定一切
所以,就别太去计较速度跟那些小细节了
JVM在执行程式时,会自己去判断该怎麽执行
甚至重编都有可能
一些锁(synchronized、lock)如果JVM判断只有一条执行绪会动到锁的话
他会把锁拿掉
一些频繁执行的区块,会把他编成机械码去执行
甚至一些区域变数
public Test(int a)
{
int b=a;
System.out.print(b);
}
JVM看到这种东西,会直接改写为
public Test(int a)
{
System.out.print(a);
}
还有物件栏位的调用
class ClassA
{
String s="TEST";
}
public TEST(A a)
{
while(true)
{
System.out.print(a.s);
}
}
第一次调用到a.s的时候,会先去找a,再去找a.s出来
但如果是第二次的话,JVM就会自己判断有没有变动的可能
如果没可能变动,就直接拿上次的质来用
还有有些字串连加的状况
s="HELLO Ms."+name;
s+=" This is a message to you";
s+=" Time: "+time;
JVM会自动换成StringBuffer去粘字串
或是将连续无变数的字串,在编译时变成同一串之类的
所以.... 写JAVA就放心写啦
虽然不是完全不用管演算法跟效率
但已经不用把心思放在这种小地方上了
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.38.77.105
※ 编辑: LaPass 来自: 114.38.77.105 (10/21 14:59)