Traceview 用來追蹤程式執行效能,主要可運用2種方式來產生效能分析圖(.trace)
A-1.使用插入code方式
在想分析的程式碼區塊的開頭及結尾個別加入
Debug.startMethodTracing() //Analysis code.... //Analysis code.... //Analysis code.... Debug.stopMethodTracing();
其中Debug.startMethodTracing()可指定分析圖檔名
如Debug.startMethodTracing(“trace_report”),在/sdcard會產生trace_report.trace檔
A-2.加入
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
否則A-1的方法會丟出Exception
A-3.執行程式
A-4.將產生的分析圖從/sdcard中複製到本機的資料夾中以方便查看,使用以下指令
./adb pull /sdcard/trace_report.trace /資料夾名稱
A-5.使用android-sdk tools的 traceview來開啟.trace檔,使用以下指令
android-sdk-linux/tools$ ./traceview /資料夾名稱/trace_report.trace
B-1.使用DDMS來產生分析圖,執行程式並切換到DDMS
B-2.點擊Start Method Profiling,開始分析
B-3.點擊Stop Method Profiling,結束分析
B-4.自動產生分析檔
以下提供簡單的分析範例,尋找程式效能熱點(HotPoint)
首先這是MainActivity
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Debug.startMethodTracing("trace_report"); TestString testStr = new TestString(); Debug.stopMethodTracing(); } }
相當簡單,只專注在 TestString 物件的建立
接著是TestString
public class TestString { private String mStr = new String(); public TestString(){ initStr(); } private void initStr(){ for(int i=0; i<10000; ++i){ mStr = mStr.concat(""+i); } } }
在initStr方法內為相當消耗效能的熱點,執行程式產生分析圖如下
在Incl cpu time 佔用 89.6% 為String.concat()方法,總共佔用了9.66秒,針對這裡來修改熱點
修改後的TestString.java如下
public class TestString { private StringBuffer mStr = new StringBuffer(); public TestString(){ initStr(); } private void initStr(){ for(int i=0; i<10000; ++i){ mStr = mStr.append(i); } } }
採用StringBuffer取代原來的String,重新產生分析圖
可以看到StringBuffer.append()方法仍然為熱點(95.7%),佔用時間卻降到0.73秒
Cherise
17 12 月, 2014 2:03 下午I discovered your Vulpes | TraceView page and noticed you could have a lot more visitors. I have found that the key to running a website is making sure the visitors you are getting are interested in your subject matter. There is a company that you can get visitors from and they let you try their service for free. I managed to get over 300 targeted visitors to day to my site. Check it out here: http://curitibacomedyclub.com.br/encurtador/5wr9