Phân tích tài nguyên một Microbenchmark

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 muốn tìm hiểu lý do khiến mã được đo lường đang chạy chậm, bạn có thể chạy các điểm chuẩn có đính kèm trình phân tích CPU.

Để 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, 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 Chọn cấu hình bản ghi. MethodTracing tương đương với "Phương thức theo dõi của Java" và StackSampling tương đương với "Phương thức lấy mẫu của Java" 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 Trình phân tích CPU trong Android Studio, hãy chọn File > Open (Tệp > Mở). Để tìm hiểu thêm về cách đọc và hiểu dấu vết, hãy xem phần Kiểm tra dấu vết.

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.

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ể điều khiển tần suất mẫuthờ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.

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.