12/08/2018, 17:13

Systrace - Công cụ giúp phân tích hiệu năng của ứng dụng Android(Phần 2)

Tiếp theo phần 1 về sử dụng Systrace để phân tích hiệu năng của ứng dụng Android (https://viblo.asia/p/systrace-cong-cu-giup-phan-tich-hieu-nang-cua-ung-dung-androidphan-1-3P0lPkLpZox) Ở phần 2 này mình sẽ trình bày cách phân tích 1 file systrace. Các thông số bạn cần quan tâm trong quá trình ...

Tiếp theo phần 1 về sử dụng Systrace để phân tích hiệu năng của ứng dụng Android (https://viblo.asia/p/systrace-cong-cu-giup-phan-tich-hieu-nang-cua-ung-dung-androidphan-1-3P0lPkLpZox) Ở phần 2 này mình sẽ trình bày cách phân tích 1 file systrace. Các thông số bạn cần quan tâm trong quá trình phân tích.

I. Giao diện file systrace

Sau khi lấy được file systrace như trong phần 1 mình đã trình bày giao diện DDMS sẽ hiện như sau Các bạn có thể thấy ở đây gồm 3 phần chính. Được đánh số tương ứng 1, 2, 3.

  • Panel 1: Sẽ liệt kê những thread đang chạy các bạn có thể nhìn thấy Main thread, Asynctask... được list ở đây
  • Panel 2: Mỗi một thread khi hoạt động tương ứng với 1 vùng màu được hiển thị bên panel này. Các bạn có thể thấy main thread với vùng màu tối được hiển thị nhiều nhất. Phần 2 này khá là hữu ít khi bạn muốn phân tích 1 ứng dụng đa luồng. Việc quan sát các vùng tối ứng với các thread có thể chỉ ra cho bạn thread nào đang chạy. Việc thread chạy có ảnh hưởng đến luồng main thread không, các luồng được thực hiện song song hay tuần tự...
  • Panel 3: Liệt kê toàn bộ các method của hệ thống, thời gian thực hiện, số lần thực hiện method. Phần này giống như kiểu 1 tree bạn có thể truy vấn bởi tên hàm để tìm thông tin về hàm đó. (Ví dụ như bạn có class A gọi hàm B, trong hàm B tiếp tục gọi hàm C, hàm C thực hiện mất 5s. Thì trong phần này chỉ cần bạn gõ tên hàm C. Bạn sẽ biết được các thông tin mình vừa liệt kê)

II. Các thông số cần quan tâm khi thực hiện phân tích

Ngoài việc quan sát các thread chạy trên panel 1 và 2 thì đa phần chúng ta sẽ sử dụng panel 3 để phân tích các hàm nghi ngờ có vấn đề về hiệu năng. Trong phần 1 mình có giả lập việc gọi hàm lặp qua đoạn code

Giả sử ở đây khi test 1 function add task trên app hoặc function có sử dụng việc add task. Thì keyword của bạn cần dùng để phân tích cần liên quan đến function mà bạn test. VD: Khi bạn test thêm note trên app todo thì bạn cần quan tâm đến các keyword add, create, task... Dùng các keyword này để tìm kiếm trong mục find của panel 3. Bạn sẽ tìm được các hàm có liên quan đến function mà bạn cần tối ưu. Với từ khóa "task" sau được gõ trong mục find của panel 3.

Phần này như trong ảnh các bạn có thể thấy đang là 5/5 tương ứng với số lần gọi trong vòng lặp for bên trên. Việc hiện số vòng lặp như này giúp bạn xác định việc gọi như vậy có cần thiết hay là dư thừa. Vì như trong ví dụ việc tạo task mà thực hiện hàm save tới 5 lần là hoàn toàn vô lý và làm giảm hiệu suất

Thông số này giúp đo lường thời gian thực hiện hàm. Việc hàm có thời gian thực hiện quá cao thì bạn phải cân nhắc làm giảm thời gian của hàm đó xuống. Hoặc là giảm thời gian của các hàm chứa trong method parent. Các bạn có thể tiếp tục click vào 1 hàm cha để xem thời gian thực hiện các hàm bên trong nó cũng như số lần gọi hàm con từ method cha.

Như vậy là mình đã trình bày xong bài viết về sử dụng Systrace để phân tích hiệu năng của ứng dụng Android. Hi vọng qua bài viết các bạn có thể hiểu được phần nào đó về systrace, sử dụng systrace để phần tích hiệu năng khi cần thiết. Bài viết mang những quan điểm cá nhân trong quá trình làm việc đúc rút ra. Nếu có gì sai sót rất mong nhận được sự đóng góp từ phía các bạn.

0