Android studio Profiler 查看程序耗時邏輯

最近在做白板軟件,用到比較多的自定義知識;先上一張簡單的圖:
在這裏插入圖片描述
但是隨着畫筆的增多,在重繪的時候,耗時越來越久,最誇張達到800多ms,這肯定是不行,這種耗時的肯定就是程序寫的不規範的問題了。

這個時候就可以使用 Android studio 自帶的 Profiler 去查看 cpu 使用率了。

關於 Profiler 的具體介紹,可以查看中文官網:

https://developer.android.google.cn/studio/profile/cpu-profiler

點擊 Profiler 的cpu,選擇你要調試的設備,然後點擊 record,然後點擊 stop,最後出現的效果如下:
在這裏插入圖片描述

  • 頂部選擇你要查看的範圍,確定要調試的部分
  • call Chart 爲具體函數的執行時間,其中綠色部分爲自己的程序

可以看到,主要耗時時間在 undo 中的 reDraw 方法中,進去一看, reDraw 把保存的 action 的list 重新拿出來繪製到緩存畫布中,其實就是 canvas.draw(path,paint);

這個應該不耗時纔對,因爲 path 和 paint 都是保存好的,爲啥每增加一筆,耗時大概增加 20多 ms 呢?繼續跟蹤:
在這裏插入圖片描述
發現就是 drawPath 這裏,竟然達到了 195.54 ms,繼續點進去,終於發現了問題;

原來,爲了加快繪製速度,當時對緩存畫布 bitmap 進行了分塊,只有相交的地方纔去繪製,但是怎麼判斷相交呢?還是得拿到 path 的 rect 大小和 bitmap 的塊進行計算,導致這裏產生了很多耗時。

所以,最後這裏修改一下,改成手動圈定刷新區域就沒這個問題了;目前就算畫滿全屏,最大延時也就50ms,完全可以接受。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章