Kiểm tra tốc độ kết xuất

Android cung cấp một số tuỳ chọn cho nhà phát triển trên thiết bị, nhằm giúp bạn hình dung nơi ứng dụng của bạn có thể gặp sự cố khi kết xuất giao diện người dùng, chẳng hạn như thực hiện tác vụ kết xuất nhiều hơn mức cần thiết, hoặc thực thi các hoạt động GPU và các luồng chạy trong thời gian dài. Trang này mô tả cách gỡ lỗi GPU vẽ nhiều lần và định cấu hình kết xuất GPU.

Để tìm hiểu thêm về các tuỳ chọn dành cho nhà phát triển trên thiết bị, bao gồm cả cách bật những tuỳ chọn này, hãy đọc bài viết Định cấu hình các tuỳ chọn dành cho nhà phát triển trên thiết bị.

Tốc độ kết xuất phân tích GPU

Công cụ kết xuất phân tích GPU hiển thị dưới dạng biểu đồ cuộn, cho biết thời gian cần thiết để hiển thị các khung của cửa sổ giao diện người dùng so với điểm chuẩn là 16,67 mili giây cho mỗi khung hình.

Trên các GPU kém hiệu năng hơn, tỷ lệ lấp đầy có sẵn (tốc độ mà GPU có thể lấp đầy vùng đệm khung) có thể khá thấp. Khi số pixel cần thiết để vẽ một khung tăng lên, GPU có thể mất nhiều thời gian hơn để xử lý các lệnh mới, khiến phần còn lại của hệ thống phải đợi cho đến khi GPU có thể bắt kịp.

Công cụ phân tích giúp bạn xác định thời điểm GPU bị quá tải khi đang cố gắng vẽ các pixel hoặc gồng gánh tình trạng vẽ nhiều lần.

Bật trình phân tích

Trước khi bắt đầu, hãy đảm bảo bạn đang sử dụng thiết bị chạy Android 4.1 (cấp độ API 16) trở lên và phải bật các tùy chọn cho nhà phát triển. Để bắt đầu phân tích kết xuất GPU của thiết bị trong khi dùng ứng dụng, hãy làm như sau:

  1. Trên thiết bị, hãy chuyển đến phần Cài đặt rồi nhấn vào Tùy chọn dành cho nhà phát triển.
  2. Trong phần Giám sát, hãy chọn Kết xuất phân tích GPU hoặc Kết xuất phân tích HWUI, tuỳ thuộc vào phiên bản Android đang chạy trên thiết bị.
  3. Trong hộp thoại Kết xuất phân tích GPU, hãy chọn Trên màn hình dưới dạng thanh để phủ các biểu đồ lên màn hình thiết bị.
  4. Mở ứng dụng mà bạn muốn phân tích định cấu hình.

Kiểm tra kết quả đầu ra

Trong hình ảnh phóng to của biểu đồ kết xuất phân tích GPU như ở hình 1, bạn có thể thấy phần được tô màu như trên Android 6.0 (API cấp 23).

Hình 1. Biểu đồ kết xuất GPU có cấu hình mở rộng.

Dưới đây là một vài điều cần lưu ý về kết quả đầu ra:

  • Đối với mỗi ứng dụng hiển thị, công cụ sẽ hiển thị một biểu đồ.
  • Mỗi thanh dọc dọc theo trục ngang đại diện cho một khung hình và chiều cao của mỗi thanh dọc biểu thị lượng thời gian khung hình đã kết xuất (tính bằng mili giây).
  • Đường kẻ ngang màu xanh lục biểu thị 16,67 mili giây. Để đạt được 60 khung hình/giây, thanh dọc cho mỗi khung hình phải nằm dưới dòng này. Bất cứ khi nào một thanh vượt quá giới hạn này, các ảnh động có thể bị tạm dừng.
  • Công cụ này làm nổi bật các khung vượt quá ngưỡng 16,67 mili giây bằng cách làm cho thanh tương ứng rộng hơn và giảm độ trong suốt.
  • Mỗi thanh có các thành phần màu liên kết với một giai đoạn trong quy trình kết xuất. Số lượng thành phần sẽ khác nhau tuỳ theo cấp độ API của thiết bị.

Bảng dưới đây cung cấp thông tin mô tả về từng phân đoạn của thanh dọc trong dữ liệu đầu ra của trình phân tích khi sử dụng thiết bị chạy Android 6.0 trở lên.

Thành phần của thanhVùng hiển thị kết xuấtMô tả
Hoán đổi vùng đệm Thể hiện thời gian CPU chờ GPU hoàn thành. Nếu thanh này cao, điều đó có nghĩa là ứng dụng đang thực hiện quá nhiều chức năng trên GPU.
Sự cố về lệnh Thể hiện thời gian mà các trình kết xuất đồ họa 2D của Android tạo lệnh cho OpenGL để vẽ và vẽ lại danh sách hiển thị. Chiều cao của thanh này tỷ lệ thuận với tổng thời gian cần thiết để thực thi mỗi danh sách hiển thị. Nhiều danh sách hiển thị hơn sẽ tương đương với thanh màu đỏ cao hơn.
Đồng bộ hóa và tải lên Biểu thị thời gian cần để tải thông tin bitmap lên GPU. Một phân đoạn lớn cho thấy ứng dụng sẽ mất nhiều thời gian để tải một lượng lớn nội dung đồ họa.
Vẽ Biểu thị thời gian dùng để ghi lại các lệnh vẽ, chẳng hạn như drawLine. Trong Compose, giai đoạn này đôi khi có thể bao gồm các thao tác đo lường và bố cục. Nếu thanh này cao, hãy ghi lại dấu vết hệ thống và kiểm tra dấu vết đó bằng Perfetto để xem thông tin chi tiết.
Đo lường/Bố cục Biểu thị lượng thời gian dành cho việc định vị và xác định kích thước của các thành phần trên giao diện người dùng trong giai đoạn bố cục, bao gồm cả việc thực thi các đối tượng sửa đổi đo lường và vị trí. Một phân đoạn lớn cho thấy các phép tính phức tạp trong những đối tượng sửa đổi này hoặc cây bố cục quá sâu cần phải tính toán lại thường xuyên.
Xử lý dữ liệu đầu vào và ảnh động Thể hiện khoảng thời gian cần thiết để đánh giá các lệnh gọi API ảnh động hoặc để xử lý dữ liệu đầu vào của con trỏ và các lệnh gọi lại của dữ liệu đầu vào đó. Nếu phân khúc này có quy mô lớn, thì có thể là một ảnh động tuỳ chỉnh hoặc phương thức gọi lại của dữ liệu đầu vào đang dành quá nhiều thời gian xử lý. Việc tính toán trạng thái và liên kết dữ liệu trong khi cuộn qua LazyColumn hoặc LazyRow cũng thường xảy ra trong phân đoạn này và là một nguyên nhân phổ biến hơn cho thấy tốc độ chậm trong phân đoạn này.
Thời gian khác/Độ trễ VSync Thể hiện thời gian mà ứng dụng dành cho các thao tác thực thi giữa hai khung hình liên tiếp. Đó có thể là một chỉ báo về việc có quá nhiều quá trình xử lý đang diễn ra trong luồng giao diện người dùng nên có thể bị giảm tải sang một luồng khác.

Bảng 1. Thanh thành phần trong Android 6.0 trở lên.

Để biết thêm thông tin về cách diễn giải thông tin do công cụ phân tích cung cấp, hãy đọc bài viết Phân tích bằng tính năng kết xuất phân tích GPU.