Microbenchmark (Điểm chuẩn vi mô)

Thư viện Jetpack Microbenchmark (Điểm chuẩn vi mô) cho phép bạn đo điểm chuẩn mã gốc Android (Kotlin hoặc Java) trong Android Studio. Thư viện này xử lý khởi động, đo lường hiệu quả hoạt động mã và số lượng phân bổ, đồng thời cung cấp kết quả đo điểm chuẩn cho cả bảng điều khiển Android Studio lẫn tệp JSON chứa thêm nhiều thông tin chi tiết.

Bạn nên phân tích mã trước khi viết điểm chuẩn. Cách này giúp bạn tìm ra các thao tác tốn kém đáng tối ưu hoá. Đồng thời cũng có thể cho biết lý do các thao tác làm việc chậm bằng cách hiện những gì đang xảy ra trong khi chạy. Những thao tác này có thể chạy trên luồng có mức độ ưu tiên thấp, chuyển sang chế độ ngủ do quyền truy cập ổ đĩa hoặc bất ngờ gọi vào một hàm tốn kém như giải mã bitmap.

Điểm chuẩn vi mô có ích nhất đối với hoạt động CPU chạy nhiều lần trong ứng dụng, hay còn gọi là đường dẫn mã nóng. Ví dụ điển hình là RecyclerView cuộn với từng mục lần lượt được hiển thị, chuyển đổi/xử lý dữ liệu và sử dụng liên tục các đoạn mã khác.

Tuy nhiên, các loại mã khác sẽ khó đo lường bằng thư viện Điểm chuẩn vi mô. Vì điểm chuẩn chạy trong một vòng lặp, nên bất kỳ mã nào không chạy thường xuyên hoặc khi được gọi nhiều lần sẽ hoạt động khác có thể không phù hợp để đo điểm chuẩn.

Để tìm hiểu cách sử dụng thư viện trong môi trường tích hợp liên tục (CI), hãy tham khảo bài viết Chạy trình đo điểm chuẩn trong môi trường Tích hợp liên tục.

Tránh đo lường bộ nhớ đệm

Tìm cách tránh chỉ đo lường mỗi một bộ nhớ đệm. Ví dụ: điểm chuẩn bố cục của khung nhìn tuỳ chỉnh có thể chỉ đo lường hiệu năng bộ nhớ đệm. Để tránh trường hợp này, bạn có thể truyền các tham số bố cục khác nhau trong mỗi vòng lặp. Tuy vậy, trong các trường hợp khác, chẳng hạn như khi đo lường hiệu năng của hệ thống tệp, thao tác này có thể gây nhiều khó khăn vì hệ điều hành sẽ lưu vào bộ nhớ đệm hệ thống tệp khi ở trong vòng lặp.

Mã không chạy thường xuyên

Mã chỉ chạy một lần trong lúc khởi động ứng dụng không có nhiều khả năng được biên dịch JIT qua Android Runtime (ART). Do đó, quá trình đo điểm chuẩn bằng Điểm chuẩn vi mô nơi mã chạy trong một vòng lặp hẹp không phải là phương cách thực tế để đo lường hiệu năng.

Để đo điểm chuẩn loại mã này, bạn nên sử dụng Jetpack Macrobenchmark. Thư viện này hỗ trợ đo lường các tương tác của người dùng cấp cao như khởi chạy ứng dụng và hiệu năng cuộn.

Đạt điểm chuẩn nhất quán

Xung nhịp trên thiết bị di động thay đổi một cách linh hoạt từ trạng thái cao (để tăng hiệu năng) sang trạng thái thấp (nhằm tiết kiệm pin hoặc khi thiết bị nóng lên). Các xung nhịp khác nhau này có thể khiến số điểm chuẩn thay đổi rất lớn, vì vậy, thư viện sẽ cung cấp các phương pháp để xử lý.

Khoá xung nhịp (yêu cầu thiết bị đã can thiệp hệ thống)

Khoá xung nhịp là cách tốt nhất để đạt hiệu năng ổn định. Phương pháp này đảm bảo xung nhịp không đạt mức quá cao để thiết bị nóng lên hoặc quá thấp khi điểm chuẩn không tận dụng toàn bộ CPU. Khoá xung nhịp được tự động áp dụng khi chạy Điểm chuẩn vi mô (Microbenchmarks) cùng Gradle hoặc có thể được áp dụng theo cách thủ công trong CI. Mặc dù đây là cách tốt nhất để đảm bảo hiệu năng ổn định, nhưng cách này không được hỗ trợ trên đa số thiết bị do yêu cầu thiết bị Android đã bị can thiệp vào hệ thống.

Chế độ hiệu năng ổn định

Window.setSustainedPerformanceMode() là một tính năng được các thiết bị hỗ trợ, cho phép ứng dụng chọn tần suất CPU tối đa thấp. Khi chạy trên các thiết bị được hỗ trợ, thư viện Microbenchmark (Điểm chuẩn vi mô) sẽ sử dụng tổ hợp API này đồng thời khởi chạy hoạt động của riêng mình để ngăn điều tiết nhiệt và ổn định kết quả.

Tính năng này được bật theo mặc định bằng testInstrumentationRunner do trình bổ trợ Gradle thiết lập. Nếu muốn sử dụng trình chạy tuỳ chỉnh, bạn có thể thêm lớp con AndroidDestinationRunner và sử dụng làm testInstrumentationRunner.

Trình chạy này khởi chạy một hoạt động mờ, toàn màn hình để đảm bảo trình đo điểm chuẩn chạy ở nền trước cũng như không có bất kỳ ứng dụng nào đang vẽ.

Tạm dừng thực thi tự động

Nếu bạn không sử dụng tính năng khoá xung nhịp hoặc duy trì hiệu năng ổn định thì thư viện sẽ thực hiện việc phát hiện điều tiết nhiệt tự động. Khi được bật, điểm chuẩn nội bộ chạy định kỳ để xác định thời điểm nhiệt độ thiết bị cao đến mức giảm hiệu năng CPU. Khi phát hiện hiệu năng CPU đang giảm, thư viện sẽ tạm dừng quá trình thực thi để thiết bị nguội bớt, sau đó chạy lại điểm chuẩn hiện tại.

Mẫu

Tài nguyên khác

Gửi ý kiến phản hồi

Để báo cáo vấn đề hoặc gửi yêu cầu về tính năng khi sử dụng tính năng đo điểm chuẩn, hãy xem công cụ theo dõi lỗi công khai.