Re: [問題] 關於android 的效能

看板java作者時間15年前 (2010/10/06 23:06), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串3/3 (看更多)
: : for ( int y = 0 ; y < 50 ; y++ ){ : : for ( int x = 0 ; x < 50 ; x++ ){ : : for ( int c = 0 ; c < 3 ; c++ ){ : : int [] block = new int [64]; : : Arrays.fill( block , 255 ); : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ : 你做了 50*50*3 次建立 Array,再把 Array 填入完全相同的 : 值的事情…… 其實用fill...這是我在po文的時候隨手打上去的 原先是會先過一定的運算後,陣列裡面才有值 再白話一點講,以上的「運算」都2秒內就結束了 我只是在po這篇文章的時候用個fill...去把他代替掉XD 所以以上的事情我暫時不太擔心到效能 : : //以上大概總共2秒 : : //若執行以下的話總共要20幾秒 : : String result = ""; : ^^^^^^^^^^^^^^^^^^^ : 請記住 Java 的 String 是 immutable 的 感謝您,我忘記之前上課的時候老師有特別強調過這點了。 : : for ( int j = 0 ; j < block.length ; j++ ){ : : result += (block[j] & 252); : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ : 你 create 了 50*50*3*64 次的 String 物件, : 然後又把他給丟了,只留最後一次的運算結果。 : : } : : } : : } : : } : 我看太不出來你的這段程式到底想要達成什麼,不過基本上調 performance : 最基本的大概就以下幾點: : 1. 盡量簡少建立物件,建立物件,GC 回收用不到的物件 overhead 都不小 : 2. 記住 String 是 immutable 的,如果真的需要不斷 append,那麼 : StringBuffer 是你的好朋友(理由同上)。 : 3. 如果是 UI 不順,試著把演算法用另一個 Thread 跑,再去 Update : UI,那麼就算實際上演算法沒有變得比較好,但 user 也會感覺程 : 式比較順一點。 謝謝您的回應 :) 對我幫助很大 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.127.72.91

10/06 23:20, , 1F
You are welcome. :)
10/06 23:20, 1F
文章代碼(AID): #1Ch91jG9 (java)
文章代碼(AID): #1Ch91jG9 (java)