作者sdallan ()
看板java
标题Re: [问题] 关於android 的效能
时间Wed Oct 6 23:06:18 2010
: : 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
1F:→ brianhsu:You are welcome. :) 10/06 23:20