Theo mặc định, Microbenchmark cung cấp cho bạn thông tin về thời gian và số lần phân bổ mã được thực thi. Nếu bạn muốn tìm hiểu lý do khiến mã được đo lường đang chạy chậm, hãy kiểm tra dấu vết phương thức (được ghi lại theo mặc định trên các phiên bản hệ điều hành được hỗ trợ) hoặc chọn các cấu hình phân tích tài nguyên khác.
Để chọn cấu hình trình phân tích tài nguyên, hãy thêm đối số trình chạy đo lường androidx.benchmark.profiling.mode
với một trong các đối số MethodTracing
(mặc định), StackSampling
hoặc None
như minh hoạ trong đoạn mã sau.
Để biết thêm thông tin về các tuỳ chọn này, hãy xem phần Ghi lại phương thức Java/Kotlin.
MethodTracing
tương đương với tính năng theo dõi và StackSampling
tương đương với tính năng lấy mẫu như xác định trong tài liệu đó.
Groovy
android { defaultConfig { // must be one of: 'None', 'StackSampling', or 'MethodTracing' testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"]= 'StackSampling' } }
Kotlin
android { defaultConfig { // must be one of: 'None', 'StackSampling', or 'MethodTracing' testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"] = "StackSampling" } }
Khi bạn phân tích tài nguyên một điểm chuẩn, tệp .trace
đầu ra sẽ được sao chép sang máy chủ lưu trữ trong thư mục cùng với kết quả JSON. Để kiểm tra kết quả phân tích tài nguyên trong Android Studio, hãy chọn đường liên kết Method Trace (Dấu vết phương thức) hoặc Stack Sampling Trace (Dấu vết lấy mẫu ngăn xếp) trong kết quả microbenchmark.
MethodTracing
Tính năng tìm dấu vết phương thức rất hữu ích khi bạn đang cố tối ưu hoá mã vì tính năng này có thể giúp bạn xác định các phương thức mất nhiều thời gian chạy hơn các phương thức khác. Sau đó, bạn có thể tập trung vào việc tối ưu hoá các phương thức có tác động nhiều nhất đến hiệu suất.
Quy trình phân tích tài nguyên diễn ra theo trình tự sau khi đo lường mã, vì vậy, hoạt động kiểm thử sẽ đưa ra cả kết quả về thời gian và kết quả phân tích tài nguyên chính xác.
Tính năng theo dõi phương thức được bật theo mặc định.
StackSampling
Hoạt động tìm dấu vết mẫu cũng có thể giúp xác định các phương thức tốn kém mà không gây ra sự hao tổn về hiệu suất cho tính năng tìm dấu vết phương thức. Tuy nhiên, nếu ứng dụng của bạn nhập một phương thức sau khi ghi lại ngăn xếp lệnh gọi và phương thức này thoát trước lần thu thập tiếp theo, thì lệnh gọi phương thức sẽ không được ghi lại. Để theo dõi các phương thức có vòng đời ngắn đúng cách, hãy sử dụng tính năng tìm dấu vết phương thức thay vì tìm dấu vết mẫu.
Với tính năng lấy mẫu ngăn xếp, điểm chuẩn lấy mẫu các ngăn xếp lệnh gọi sau khi hoàn tất quá trình khởi động. Bạn có thể kiểm soát hành vi lấy mẫu như tần suất lấy mẫu và thời lượng lấy mẫu bằng cách sử dụng các đối số đo lường.
Trên Android 10 (API 29) trở lên, tính năng lấy mẫu ngăn xếp sử dụng Simpleperf để lấy mẫu các ngăn xếp lệnh gọi ứng dụng, bao gồm cả mã C++. Trên Android 9 (API 28) trở xuống, ứng dụng này sử dụng
Debug.startMethodTracingSampling
để thu thập các mẫu ngăn xếp.
Bạn có thể thêm các đối số đo lường khác để định cấu hình chế độ phân tích tài nguyên này:
androidx.benchmark.profiling.sampleFrequency
- Số lượng mẫu ngăn xếp cần chụp mỗi giây.
- Loại đối số: số nguyên
- Mặc định là 1.000 mẫu mỗi giây.
androidx.benchmark.profiling.sampleDurationSeconds
- Thời lượng điểm chuẩn để chạy.
- Loại đối số: số nguyên
- Mặc định là 5 giây.
androidx.benchmark.profiling.skipWhenDurationRisksAnr
- Bỏ qua tính năng theo dõi phương thức khi có khả năng gây ra lỗi ANR. Bạn nên bật tính năng này cho các lần chạy CI, vì lỗi ANR có thể gây ra sự cố trong các lần chạy CI dài.
- Loại đối số: boolean
- Mặc định là
true
.
Không có
Đối số này không chụp tệp phân tích tài nguyên. Thông tin về thời gian và số lần phân bổ vẫn được đo lường.
Đề xuất cho bạn
- Lưu ý: văn bản có đường liên kết sẽ hiện khi JavaScript tắt
- Đối số đo lường Microbenchmark
- Chạy phép đo điểm chuẩn trong tính năng Tích hợp liên tục