Re: [問題] 新手繼承問題(非作業)

看板java作者 (LaPass)時間13年前 (2012/10/21 02:52), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/4 (看更多)

10/21 00:09,
借問,我習慣用this.name而不用name,performance有差嗎
10/21 00:09

10/21 00:14,
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)
文章代碼(AID): #1GWlBvuC (java)
文章代碼(AID): #1GWlBvuC (java)