Benchmark (Điểm chuẩn)

Đo lường chính xác hiệu suất của mã trong Android Studio.
Bản cập nhật mới nhất Bản phát hành ổn định Bản phát hành dùng thử Bản phát hành beta Bản phát hành alpha
Ngày 1 tháng 5 năm 2024 1.2.4 - - 1.3.0-alpha04

Khai báo phần phụ thuộc

Để thêm một phần phụ thuộc vào Benchmark, bạn phải thêm kho lưu trữ Google Maven vào dự án. Hãy đọc bài viết về kho lưu trữ Maven của Google để biết thêm thông tin.

Macrobenchmark

Để sử dụng Macrobenchmark trong dự án, hãy thêm các phần phụ thuộc sau vào tệp build.gradle cho mô-đun macrobenchmark:

Groovy

dependencies {
  androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.2.4"
}

Kotlin

dependencies {
  androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.2.4")
}

Microbenchmark

Để sử dụng Microbenchmark trong dự án, hãy thêm các phần phụ thuộc sau vào tệp build.gradle cho mô-đun đo điểm chuẩn vi mô:

Groovy

dependencies {
    androidTestImplementation "androidx.benchmark:benchmark-junit4:1.2.4"
}

android {
    ...
    defaultConfig {
        ...
        testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner"
    }
}

Kotlin

dependencies {
    androidTestImplementation("androidx.benchmark:benchmark-junit4:1.2.4")
}

android {
    ...
    defaultConfig {
        ...
        testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner"
    }
}

Thư viện Microbenchmark cũng cung cấp một trình bổ trợ Gradle dùng được cho mô-đun microbenchmark của bạn. Trình bổ trợ này đặt cấu hình xây dựng mặc định cho mô-đun, thiết lậpđiểm chuẩn để xuất bản sao cho máy chủ đồng thời cung cấp tác vụ ./gradlew lockClocks.

Để sử dụng trình bổ trợ này, hãy đưa dòng sau vào khối "plugin" trong tệp build.gradle cấp cao:

Groovy

plugins {
  id 'androidx.benchmark' version '1.2.4' apply false
}

Kotlin

plugins {
  id("androidx.benchmark") version "1.2.4" apply false
}

Sau đó, hãy áp dụng trình bổ trợ này vào tệp build.gradle của mô-đun chuẩn

Groovy

plugins {
  id 'androidx.benchmark'
}

Kotlin

plugins {
    id("androidx.benchmark")
}

Ý kiến phản hồi

Ý kiến phản hồi của bạn có thể giúp chúng tôi cải thiện Jetpack. Hãy cho chúng tôi biết nếu bạn phát hiện lỗi mới hoặc có ý tưởng cải thiện thư viện này. Vui lòng xem các lỗi hiện có trong thư viện này trước khi báo một lỗi mới. Bạn có thể thêm lượt bình chọn cho lỗi hiện có bằng cách nhấp vào nút dấu sao.

Báo lỗi mới

Hãy xem tài liệu về Công cụ theo dõi lỗi để biết thêm thông tin.

Phiên bản 1.3

Phiên bản 1.3.0-alpha04

Ngày 1 tháng 5 năm 2024

Phát hành androidx.benchmark:benchmark-*:1.3.0-alpha04. Phiên bản 1.3.0-alpha04 bao gồm các thay đổi sau.

Các thay đổi về API

  • Thêm biến thể MacrobenchmarkRule#measureRepeated thử nghiệm. Biến thể này sử dụng một PerfettoConfig tuỳ chỉnh để ghi lại dấu vết Perfetto được tuỳ chỉnh hoàn toàn. Xin lưu ý rằng cấu hình được định cấu hình không chính xác có thể khiến các lớp Chỉ số tích hợp không thành công. (Idfd3d, b/309841164, b/304038384)
  • Để rõ ràng hơn, chúng tôi đổi tên PowerMetric.deviceSupportsPowerEnergy thành PowerMetric.deviceSupportsHighPrecisionTracking (I5b82f)
  • Thêm PowerMetric.deviceBatteryHasMinimumCharge()PowerMetric.deviceSupportsPowerEnergy() để cho phép thay đổi hoặc bỏ qua điểm chuẩn dựa trên khả năng đo lường nguồn điện của thiết bị. (I6a591, b/322121218)

Sửa lỗi

  • Thêm thông tin so sánh với hồ sơ cơ sở trước đó (I824c8, b/269484510)
  • Thêm DSL để tắt cảnh báo (Ic4deb, b/331237001)
  • Thay đổi ngoại lệ thành nhật ký thông tin khi các biến thể điểm chuẩn bị tắt (I8a517, b/332772491)
  • Giúp việc ghi lại dấu vết phương thức cho một Macrobenchmark đơn giản hơn trong phạm vi thời lượng của measureBlock() thực tế. Trước đây, phương thức này bắt đầu khi khởi chạy quy trình mục tiêu và chỉ hỗ trợ khởi động nguội (Iee85a, b/300651094)
  • Tránh sự cố khi trình xử lý theo dõi perfetto khởi động chậm (I98841, b/329145808)

Phiên bản 1.3.0-alpha03

Ngày 17 tháng 4 năm 2024

Phát hành androidx.benchmark:benchmark-*:1.3.0-alpha03. Phiên bản 1.3.0-alpha03 bao gồm các thay đổi sau.

Tính năng mới

  • Thêm các API PerfettoTraceProcessor.Session.queryMetrics API công khai bằng các biến thể JSON, textproto và proto nhị phân (không được mã hoá). Các phần tử này cho phép bạn truy vấn các chỉ số tích hợp trong TraceProcessor (I54d7f, b/304038382)
  • Thêm profilerOutput vào đầu ra JSON để dễ dàng sử dụng công cụ xoay quanh các dấu vết phân tích tài nguyên (ví dụ: perfetto, dấu vết phương thức). (I05ddd, b/332604449)
  • Thêm thẻ nguồn để đo điểm chuẩn Cấu hình Perfetto. Thao tác này sẽ ghi lại, chẳng hạn như các điểm theo dõi khoá chế độ thức. (Icfe44, b/286551983)
  • Đã thêm đối số inst androidx.benchmark.profiling.skipWhenDurationRisksAnr, có thể được đặt thành false để tránh bỏ qua dấu vết phương thức khi thời lượng dự kiến có thể gây ra ANR – bạn nên tránh trong các lần chạy CI.
  • Thêm đối số inst thử nghiệm androidx.benchmark.profiling.perfCompare.enable, đặt đối số này thành true để chạy thời gian so sánh giữa các giai đoạn đo lường và phân tích tài nguyên. Hữu ích trong những trường hợp như đánh giá mức hao tổn của tính năng tìm dấu vết phương thức. (I61fb4, b/329146942)

Các thay đổi về API

  • Thay đổi TraceSectionMetric.Mode thành lớp kín để có thể mở rộng trong tương lai mà không phá vỡ toàn bộ câu lệnh (I71f7b)
  • Thêm TraceSectionMetric.Mode.Average.Count, đồng thời sắp xếp lại thứ tự các đối số để đối số (chế độ) phổ biến hơn nằm trước đó trong danh sách đối số, làm giảm nhu cầu chỉ định tên tham số. (Ibf0b0, b/315830077, b/322167531)
  • Đổi tên Metric.getResult thành getMeasurements để phù hợp với loại dữ liệu trả về (I42595)

Sửa lỗi

  • Khắc phục để đảm bảo điểm chuẩn sử dụng hồ sơ cơ sở đã tạo khi automaticGenerationDuringBuild đang tắt (Ic144f, b/333024280)
  • Sửa lỗi ghi đè thuộc tính trình bổ trợ Gradle BaselineProfile để bật tính năng tạo hồ sơ cơ sở và đo điểm chuẩn khi tuỳ chỉnh nonMinified hoặc loại bản dựng điểm chuẩn. (Ib8f05, b/324837887)
  • Sửa lỗi dấu vết phương thức xoá hoàn toàn trong macrobenchmark để dấu vết phương thức được ghi lại đầy đủ và hợp lệ, ngay cả trên các thiết bị chậm hơn. (I6349a, b/329904950)
  • Bật tính năng bắt đầu chặn trên bản ghi dấu vết Perfetto để giảm nguy cơ thiếu dữ liệu khi bắt đầu theo dõi. Chỉ được hỗ trợ trên API 33 trở lên. (Ie6e41, b/310760059)
  • Thêm cảnh báo khi Android Test Orchestrator được sử dụng trong các mô-đun điểm chuẩn. Điều này sẽ khiến các tệp JSON đầu ra cho mỗi mô-đun bị ghi đè nhiều lần. (Ia1af6, b/286899049)
  • Buộc phân tách hàng nghìn dấu "," (dấu phẩy) để đảm bảo tính nhất quán trong đầu ra của Studio, bỏ qua ngôn ngữ thiết bị (I3e921, b/313496656)
  • TraceSectionMetric hiện hỗ trợ các lát cắt được tạo bằng Trace.{begin|end}AsyncSection. (I91b32, b/300434906)
  • Thêm nhãn log.w / ngoại lệ vào tất cả lỗi phát hiện khi khởi động. Điều này không thay đổi hành vi hiện tại (vì vậy, một số lỗi gửi và một số khác ngầm không phát hiện ra việc khởi động), chỉ giúp việc xử lý trở nên dễ hiểu hơn. Nhìn chung, những chỉ số Log.w() và không báo cáo được các chỉ số khởi động là những sự kiện bị thiếu sự kiện không phải khung hình, các trường hợp ngoại lệ được gửi khi phát hiện quá trình khởi động, ngoại trừ thông tin về thời gian kết xuất khung hình (từ các lát cắt của giao diện người dùng/RT). (Id240f, b/329145809)
  • Huỷ các công việc dexopt ở chế độ nền trước khi chạy Macrobenchmark để giảm nhiễu. (I989ed)
  • Thêm phép đo frameCount vào FrameTimingMetric để hỗ trợ khám phá các trường hợp trong đó phép đo thay đổi do số lượng khung hình được tạo đã thay đổi (ảnh động mới được thêm, đã khắc phục vấn đề vô hiệu hoá). (I1e5aa)
  • Làm rõ rằng frameOverrunMs là chỉ số được ưu tiên để theo dõi (khi có sẵn trong tài liệu) và lý do cần theo dõi. (I18749, b/329478323)

Phiên bản 1.3.0-alpha02

Ngày 20 tháng 3 năm 2024

Phát hành androidx.benchmark:benchmark-*:1.3.0-alpha02. Phiên bản 1.3.0-alpha02 bao gồm các thay đổi sau.

Tính năng mới

  • Tính năng hỗ trợ R8 thử nghiệm trong microbench thông qua các quy tắc Proguard được nhúng. Lưu ý rằng tính năng hỗ trợ này đang trong quá trình thử nghiệm và yêu cầu AGP 8.3 để giảm kích thước kiểm thử mô-đun thư viện. Hãy dùng các thuộc tính sau để bật tính năng giảm thiểu/tối ưu hoá R8 trong build.gradle của mô-đun điểm chuẩn. Điều này sẽ giúp tăng đáng kể hiệu suất, tuỳ thuộc vào khối lượng công việc. (I738a3, b/184378053)

    android {
        buildTypes.release.androidTest.enableMinification = true
    }
    

Sửa lỗi

  • Sửa cảnh báo theo dõi phương thức xuất hiện trên dòng riêng biệt với đầu ra microbench. (I0455c, b/328308833)

Phiên bản 1.3.0-alpha01

Ngày 21 tháng 2 năm 2024

Phát hành androidx.benchmark:benchmark-*:1.3.0-alpha01. Phiên bản 1.3.0-alpha01 bao gồm các thay đổi sau.

Các thay đổi về API

  • Đổi tên các tham số boolean MicrobenchmarkConfig để tránh từ " nên" không cần thiết (Ia8f00, b/303387299)
  • Thêm BenchmarkRule.measureRepeatedOnMainThread để các điểm chuẩn luồng chính (ví dụ: những điểm chuẩn chạm vào Khung hiển thị hoặc Giao diện người dùng Compose) có thể tránh kích hoạt lỗi ANR, đặc biệt là trong các bộ ứng dụng lớn trong CI. (I5c86d)
  • Thêm FrameTimingGfxInfoMetric, một phương thức triển khai thay thế thử nghiệm của FrameTimingMetric với các phép đo lấy trực tiếp từ nền tảng, thay vì trích xuất từ dấu vết Perfetto. (I457cb, b/322232828)
  • Thêm khả năng kết xuất hồ sơ ART trong từng vòng lặp warmUp. (I17923)
  • Một số thay đổi đối với API TraceSectionMetric:
    • Thêm Mode.Min, Mode.Max
    • Thêm đối số nhãn để ghi đè tên mục dưới dạng nhãn chỉ số
    • Thêm tên chế độ vào đầu ra để làm rõ ý nghĩa của chỉ số
    • Thay đổi giá trị mặc định thành tổng, vì hầu hết cách sử dụng chỉ số này là dành cho các sự kiện lặp lại. Hãy lưu ý đến những thay đổi này trong việc sử dụng CI, vì điều này có thể tạo ra sự gián đoạn hoặc gián đoạn quá trình phân tích cú pháp. (Ic1e82, b/301892382, b/301955938)

Sửa lỗi

  • Cải thiện thông báo lỗi trong trình bổ trợ Gradle cho hồ sơ cơ sở khi thiết bị được quản lý được chỉ định không tồn tại (Idea2b, b/313803289)
  • Sửa lỗi để đưa hồ sơ cơ sở của thư viện vào AAR trước AGP 8.3.0-alpha15 (I1d2af, b/313992099)
  • Sửa URL đầu ra của hồ sơ khởi động và đường cơ sở khi kết thúc tác vụ tạo (I802e5, b/313976958)
  • Đã điều chỉnh thời gian chờ của nguồn dữ liệu để tìm cách khắc phục java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)] (I8dc7d, b/323601788)
  • Thêm 2 đối số đo lường để ghi đè hành vi bỏ qua chương trình đổ bóng nhằm giải quyết sự cố khi đo điểm chuẩn ứng dụng không có ProfileInstaller 1.3:
    • androidx.benchmark.dropShaders.enable=true/false : có thể được dùng để bỏ qua tất cả thao tác thả chương trình đổ bóng (bao gồm cả hoạt động được thực hiện trong StartupMode.Cold lần khởi chạy), đặc biệt là khi đo điểm chuẩn ứng dụng chưa sử dụng trình cài đặt hồ sơ 1.3
    • androidx.benchmark.dropShaders.throwOnFailure=true/false : có thể được dùng để chấp nhận lỗi khi cố gắng thả chương trình đổ bóng, chẳng hạn như khi đo điểm chuẩn ứng dụng không có trình cài đặt hồ sơ 1.3 (I4f573)
  • Bỏ qua hoạt động tìm dấu vết phương thức trên luồng giao diện người dùng khi dự kiến mất hơn vài giây và xoá dấu vết phương thức khi gửi. (I6e768)
  • Gửi khi tên tệp dài hơn 200 ký tự để tránh các sự cố không rõ ràng khi ghi hoặc xử lý hậu kỳ tệp. (I4a5ab)
  • Khắc phục vấn đề các khung hình chưa hoàn tất ở đầu và cuối dấu vết có thể được ghép nối với nhau, dẫn đến báo cáo không chính xác thành một khung cực kỳ dài. (I39353, b/322232828)
  • Hãy sử dụng --skip verification trên API 30 trở lên khi cài đặt lại một gói trên API 30-33 để xoá hồ sơ ART trên bản dựng của người dùng. Điều này giúp bỏ qua những cảnh báo của Play Protect gây ra lỗi trên một số loại thiết bị. (Ic9e36)
  • Sử dụng am force-stop để loại bỏ ứng dụng khi không phải là ứng dụng hệ thống như Giao diện người dùng hệ thống hoặc Trình chạy. (I5e028)
  • Macrobenchmark hiện chờ 1 second để ứng dụng mục tiêu kích hoạt hồ sơ ART (trước đây ứng dụng này chờ 500 ms). (I85a50, b/316082056)
  • Cải thiện lỗi FrameTimingMetric khi không tạo khung hình và luôn xuất đường liên kết để theo dõi khi không phân tích cú pháp chỉ số để hỗ trợ chẩn đoán vấn đề. (I956b9)
  • Khắc phục sự cố trong FrameTimingMetric không phân tích được cú pháp mã khung, đặc biệt là trên một số thiết bị OEM. (Ia24bc, b/303823815, b/306235276)
  • Mức độ nghiêm ngặt nới lỏng của quy trình kiểm tra trong FrameMetrics và thêm nhiều chi tiết hơn vào các thông báo lỗi. (Iadede)

Phiên bản 1.2

Phiên bản 1.2.4

Ngày 17 tháng 4 năm 2024

Phát hành androidx.benchmark:benchmark-*:1.2.4. Phiên bản 1.2.4 bao gồm các thay đổi sau.

Sửa lỗi

  • Sửa lỗi srcset hồ sơ cơ sở không được thiết lập trong các biến thể điểm chuẩn. Đồng thời sửa automaticGenerationDuringBuild trong các thư viện gây ra phần phụ thuộc vòng tròn. (I28ab7, b/333024280)
  • Sử dụng am force-stop để loại bỏ ứng dụng khi không phải là ứng dụng hệ thống như Giao diện người dùng hệ thống hoặc Trình chạy. Thao tác này khắc phục sự cố đo điểm chuẩn StartupMode.COLD xảy ra trong tình huống "Không được chạy gói $package trước khi khởi động nguội!" do quá trình loại bỏ quy trình không hoàn toàn thành công. (I5e028)

Phiên bản 1.2.3

Ngày 24 tháng 1 năm 2024

Phát hành androidx.benchmark:benchmark-*:1.2.3. Phiên bản 1.2.3 bao gồm các thay đổi sau.

Sửa lỗi

  • Xoá trường hợp ngoại lệ khỏi Trình bổ trợ Gradle cho Hồ sơ cơ sở khi phiên bản AGP là 8.3.0 trở lên.
  • Sửa lỗi để đưa các hồ sơ cơ sở của thư viện vào AAR trước AGP 8.3.0-alpha15.

Phiên bản 1.2.2

Ngày 1 tháng 12 năm 2023

Phát hành androidx.benchmark:benchmark-*:1.2.2. Phiên bản 1.2.2 bao gồm các thay đổi sau.

Hồ sơ cơ sở

  • Nhật ký thực thi sẽ hiển thị đường dẫn tệp đầu ra của hồ sơ cơ sở dưới dạng URI tệp cục bộ (aosp/2843918, aosp/2853665, b/313976958)

Phiên bản 1.2.1

Ngày 15 tháng 11 năm 2023

Phát hành androidx.benchmark:benchmark-*:1.2.1. Phiên bản 1.2.1 bao gồm các thay đổi sau.

Tính năng mới

  • Cải thiện thông báo lỗi khi người dùng tắt biến thể thử nghiệm (b/307478189)
  • Thêm các thuộc tính để hỗ trợ tích hợp chạy thử nghiệm AS (b/309805233), (b/309116324)

Phiên bản 1.2.0

Ngày 18 tháng 10 năm 2023

Phát hành androidx.benchmark:benchmark-*:1.2.0. Phiên bản 1.2.0 bao gồm các thay đổi sau.

Các thay đổi quan trọng kể từ phiên bản 1.1.0

Hồ sơ cơ sở

  • Trình bổ trợ Gradle cho Hồ sơ cơ sở mới sẽ tự động thu thập và đưa các hồ sơ cơ sở vào quy trình kiểm thử và tạo bản dựng.
  • BaselineProfileRule.collect hiện đã ổn định, là một phiên bản đơn giản và đơn giản của API BaselineProfileRule.collectBaselineProfile thử nghiệm trước đó
    • Chỉ cần chỉ định packageName và lái ứng dụng của bạn
  • Đối với các thư viện tạo hồ sơ cơ sở, giờ đây, bạn có thể lọc các quy tắc được tạo bằng mã (đối số BaselineProfileRule.collect) hoặc đơn giản hơn là lọc trong trình bổ trợ Gradle
  • Sửa lỗi
    • Khắc phục lỗi thu thập hồ sơ cơ sở trên Android U+ (Id1392, b/277645214)

Macrobenchmark

  • Biên dịch
    • Macrobenchmark hiện đặt lại chính xác trạng thái biên dịch cho mỗi quá trình biên dịch. Việc này đòi hỏi bạn phải cài đặt lại APK trước Android 14. Vì vậy, bạn nên đo điểm chuẩn trên Android 14 trở lên nếu muốn duy trì trạng thái (như thông tin đăng nhập của người dùng) trong những dữ liệu đang được đo lường.
    • Bạn cũng có thể giải quyết vấn đề này bằng cách kiểm soát hoạt động biên dịch ứng dụng một cách riêng biệt và bỏ qua bước biên dịch bằng CompilationMode.Ignore() hoặc đối số đo lường
  • Đối số đo lường

    • Hỗ trợ đối số đo lường androidx.benchmark.dryRunMode.enable, (đã có trong microbenchmark) để chạy xác thực nhanh hơn (ví dụ: khi tạo điểm chuẩn hoặc khi gửi trước)
    • Hỗ trợ androidx.benchmark.profiling.mode=StackSamplingMethodTracing.
    • Thêm androidx.benchmark.enabledRules để cho phép lọc hồ sơ cơ sở trong thời gian chạy so với thử nghiệm quy tắc macrobenchmark
    • Thêm đối số androidx.benchmark.perfettoSdkTracing.enable để bật tính năng theo dõi bằng trace-perfetto, ví dụ: theo dõi đối tượng kết hợp lại trong Compose. Xin lưu ý rằng khi được sử dụng với StartupMode.COLD, thời gian sẽ ảnh hưởng đáng kể khi thư viện theo dõi được tải và bật trong quá trình khởi động ứng dụng.
  • Yêu cầu

    • Macrobenchmark hiện yêu cầu ProfileInstaller 1.3.0 trở lên trong ứng dụng đích để bật tính năng chụp / đặt lại hồ sơ và xoá bộ nhớ đệm của chương trình đổ bóng.
  • API chỉ số thử nghiệm mới

    • Thêm TraceSectionMetric thử nghiệm cho phép trích xuất thời gian đơn giản từ các khối trace("") {} trong ứng dụng của bạn hoặc TraceMetric để tận dụng khả năng truy vấn đầy đủ của Perfetto TraceProcessor.
    • Thêm PowerMetric thử nghiệm để thu thập thông tin về mức sử dụng pin
    • Thêm MemoryCountersMetric thử nghiệm để tính lỗi trang
    • Thêm API PerfettoTraceProcessor thử nghiệm được dùng nội bộ để trích xuất chỉ số từ Dấu vết hệ thống (còn gọi là dấu vết Perfetto)
  • Sửa lỗi

    • Khắc phục sự cố khi cài đặt hoặc trích xuất hồ sơ từ một ứng dụng được cài đặt từ nhiều APK (ví dụ: từ gói ứng dụng).
    • Sửa lỗi FrameTimingMetric bỏ qua các khung hình có mã nhận dạng khung không nhất quán (thường là khung hình trong khi gợn sóng trên API 31 trở lên) (I747d2, b/279088460)
    • Sửa lỗi phân tích cú pháp trên dấu vết > 64 MB (Ief831, b/269949822)
    • Làm rõ lỗi khi hình ảnh hệ điều hành của thiết bị (đặc biệt là trình mô phỏng) không được định cấu hình chính xác để theo dõi hoặc biên dịch
    • Bỏ qua kiểm tra mức pin đối với các thiết bị không có pin (vi mô và macro)
    • Cải thiện đầu ra tệp, khắc phục lỗi rõ ràng hơn cho các thư mục đầu ra không hợp lệ và chế độ mặc định an toàn hơn
    • Cải thiện độ ổn định của StartupMode.COLD bằng cách liên tục xoá bộ nhớ đệm của chương trình đổ bóng (cũng được hiển thị qua MacrobenchmarkScope.dropShaderCache)
    • Sửa lỗi dự phòng leanback cho startActivityAndWait.

Microbenchmark

  • Tính năng
    • Quy trình phân tích được chuyển sang một giai đoạn riêng biệt, sau các chỉ số khác, vì vậy, một lần chạy kiểm thử có thể hiển thị cả kết quả phân tích thời gian phân tích tài nguyên chính xác.
  • API thử nghiệm
    • Thêm API MicrobenchmarkConfig thử nghiệm để xác định các chỉ số tuỳ chỉnh cũng như định cấu hình tính năng theo dõi và phân tích. Có thể dùng để ghi lại dấu vết phương thức hoặc ghi lại điểm theo dõi (nhưng cần lưu ý đến mức hao tổn hoạt động theo dõi).
    • Thêm các API thử nghiệm để kiểm soát BenchmarkState riêng biệt với BenchmarkRule mà không dùng JUnit
    • Thêm bản ghi PerfettoTrace thử nghiệm để cho phép ghi lại dấu vết Perfetto (có cấu hình tuỳ chỉnh) tách biệt với các API điểm chuẩn.
  • Sửa lỗi
    • Giải pháp về việc thiếu khoảng trắng ở đầu trong đầu ra đo điểm chuẩn của Android Studio.
    • Khắc phục vấn đề không in được cảnh báo trong đầu ra đo điểm chuẩn của Android Studio.
    • Khắc phục sự cố SampledProfiling trên Android 13 (API 33) trở lên.
    • Cải thiện đáng kể hiệu suất của dryRunMode bằng cách bỏ qua IsolationActivity và tính năng theo dõi dấu vết Perfetto (Chế độ chạy khô nhanh hơn tới 10 lần trên các phiên bản hệ điều hành cũ).

Phiên bản 1.2.0-rc02

Ngày 6 tháng 10 năm 2023

Phát hành androidx.benchmark:benchmark-*:1.2.0-rc02. Phiên bản 1.2.0-rc02 bao gồm các thay đổi sau.

Sửa lỗi

  • Sửa lỗi đầu ra tệp Điểm chuẩn để không còn làm hỏng quá trình sao chép tệp trình bổ trợ BaselineProfile. Các tệp được tạo và sao chép ra khỏi thiết bị nhưng đã được đổi tên để trình bổ trợ gradle không nhìn thấy các tệp đó. (I8dbcc, b/303034735, b/296453339)
  • Làm rõ thông báo lỗi tải tracing-perfetto khi chèn từ mô-đun macrobenchmark vào ứng dụng mục tiêu.

Phiên bản 1.2.0-rc01

Ngày 20 tháng 9 năm 2023

Phát hành androidx.benchmark:benchmark-*:1.2.0-rc01. Phiên bản 1.2.0-rc01 bao gồm bao gồm các thay đổi sau.

Sửa lỗi

  • Hệ thống hiện sẽ gửi một ngoại lệ (có hướng dẫn khắc phục) khi tính năng theo dõi SDK Perfetto không khởi chạy được trong một Điểm chuẩn. (I6c878, b/286228781)
  • Khắc phục sự cố OOM khi chuyển đổi dấu vết phương thức ART -> định dạng perfetto. (I106bd, b/296905344)
  • (Macrobenchmark) Làm rõ nhãn theo dõi phương thức khi được liên kết trong đầu ra kiểm thử trong Studio và tên tệp theo dõi phương thức cố định là duy nhất trên thiết bị/máy chủ, để các tên tệp này sẽ không bị ghi đè khi chạy nhiều điểm chuẩn. (I08e65, b/285912360)
  • Đảm bảo rằng thiết bị đang hoạt động khi thu thập hồ sơ cơ sở. (I503fc)

Phiên bản 1.2.0-beta05

Ngày 30 tháng 8 năm 2023

Phát hành androidx.benchmark:benchmark-*:1.2.0-beta05. Phiên bản 1.2.0-beta05 bao gồm các thay đổi sau.

Tính năng mới

  • Trình bổ trợ Gradle cho Hồ sơ cơ sở hiện hỗ trợ Trình bổ trợ Android cho Gradle 8.3. (aosp/2715214)

Phiên bản 1.2.0-beta04

Ngày 23 tháng 8 năm 2023

Phát hành androidx.benchmark:benchmark-*:1.2.0-beta04. Phiên bản 1.2.0-beta04 bao gồm các thay đổi sau.

Tính năng mới

  • Trình bổ trợ Gradle cho Hồ sơ cơ sở nay hỗ trợ Trình bổ trợ Android cho Gradle 8.3. (aosp/2715214)

Sửa lỗi

  • Khắc phục lỗi khi ghi/di chuyển và kéo tệp (đặc biệt là lỗi từ các chương trình kiểm thử có sử dụng tham số) bằng cách làm sạch tên tệp đầu ra nhiều hơn nữa, tránh "=" và ":" trong tên tệp đầu ra. (I759d8)

Phiên bản 1.2.0-beta03

Ngày 9 tháng 8 năm 2023

Phát hành androidx.benchmark:benchmark-*:1.2.0-beta03. Phiên bản 1.2.0-beta03 bao gồm các thay đổi sau.

Các thay đổi về API

  • Thêm đối số để lọc TraceSectionMetric chỉ theo gói mục tiêu, chế độ này bật theo mặc định (Ia219b, b/292208786)

Sửa lỗi

  • Đổi tên đối số đo lường fullTracing.enable thành perfettoSdkTracing.enable để nhất quán với tên cấu phần phần mềm, và các tham chiếu khác. fullTracing.enable sẽ tiếp tục hoạt động dưới vai trò phương án dự phòng. (I7cc00)
  • Giờ đây, các điểm theo dõi nội bộ của thư viện Điểm chuẩn (bao gồm cả các điểm theo dõi giai đoạn/vòng lặp Microbenchmark) sẽ xuất hiện trong trình xem dấu vết hệ thống của Studio và lồng ghép chính xác theo quy trình tương ứng trong Perfetto. (I6b2e7, b/293510459)
  • Xoá lỗi NOT-PROFILEABLE của Macrobenchmark trên API 31 trở lên, và bỏ qua bài kiểm tra về khả năng lập hồ sơ trên các thiết bị đã bị can thiệp hệ thống eng/userdebug. (I2abac, b/291722507)
  • Khi sử dụng tính năng Tối ưu hoá Bố cục Dex, các quy tắc của hồ sơ khởi động hiện cũng được coi là quy tắc của hồ sơ cơ sở. (aosp/2684246, b/293889189)

Phiên bản 1.2.0-beta02

Ngày 26 tháng 7 năm 2023

Phát hành androidx.benchmark:benchmark-*:1.2.0-beta02. Phiên bản 1.2.0-beta02 bao gồm các thay đổi sau.

Các thay đổi về API

  • Thêm các API thử nghiệm cho cấu hình và chỉ số Microbench tuỳ chỉnh (ví dụ: trình phân tích hồ sơ và theo dõi). (I86101, b/291820856)

Sửa lỗi

  • Báo cáo lỗi trong Macrobench khi hệ điều hành bị định cấu hình sai cho việc theo dõi, theo cách mà gần đây lỗi này đã được sửa trong trình mô phỏng API 26/28 ARM64. (I0a328, b/282191686)
  • Đã thêm thông tin về lỗi khi đặt lại quá trình biên dịch để đề xuất cập nhật trình mô phỏng, vì gần đây một số trình mô phỏng đã khắc phục sự cố này. (I8c815, b/282191686)
  • Thiết lập androidx.test.uiautomator:uiautomator:2.2.0 làm api thay vì là phần phụ thuộc implementation. (I1981e)

Phiên bản 1.2.0-beta01

Ngày 18 tháng 7 năm 2023

Phát hành androidx.benchmark:benchmark-*:1.2.0-beta01. Phiên bản 1.2.0-beta01 bao gồm các thay đổi sau.

Sửa lỗi

  • Sửa lỗi các cảnh báo đôi khi bị chặn trong kết quả Điểm chuẩn trong Studio, và giải quyết vấn đề các khoảng trắng ở đầu dòng trong kết quả Điểm chuẩn không xuất hiện trong Studio (Ia61d0, b/227205461, b/286306579, b/285912360)
  • Đã sửa nội dung nhận xét về FrameTimingMetric. Chỉ số phụ này có tên là frameDurationCpuMs. (Ib097f, b/288830934).

Phiên bản 1.2.0-alpha16

Ngày 21 tháng 6 năm 2023

Phát hành androidx.benchmark:benchmark-*:1.2.0-alpha16. Phiên bản 1.2.0-alpha16 bao gồm các thay đổi sau.

Các thay đổi về API

  • API BaselineProfileRule.collectBaselineProfile() đổi tên thành BaselineProfileRule.collect(). (I4b665)

Sửa lỗi

  • Tính năng hỗ trợ Macrobenchmark dành cho androidx.benchmark.profiling.mode = MethodTracing. (I7ad37, b/285912360)
  • Quá trình lập hồ sơ microbenchmark được chuyển sang một giai đoạn riêng biệt. Cho nên, theo trình tự thì quá trình này sẽ diễn ra sau quá trình đo lường, thay vì thay thế quá trình đó. Các mục dấu vết MethodTracing (nếu có) cũng sẽ được đưa vào trong dấu vết Perfetto đã thu thập. (I9f657, b/285014599)
  • Thêm số lần thực hiện đo lường đối với TraceSectionMetric bằng Mode.Sum. (Ic121a, b/264398606)

Phiên bản 1.2.0-alpha15

Ngày 7 tháng 6 năm 2023

Phát hành androidx.benchmark:benchmark-*:1.2.0-alpha15. Phiên bản 1.2.0-alpha15 bao gồm các thay đổi sau.

Tính năng mới

  • Thêm MemoryUsageMetric thử nghiệm để theo dõi việc sử dụng bộ nhớ của ứng dụng mục tiêu. (I56453, b/133147125, b/281749311)
  • Thêm tính năng hỗ trợ cho các cấu hình Perfetto được tuỳ chỉnh hoàn toàn bằng PerfettoTrace.record (If9d75, b/280460183)
  • Thêm thuộc tính để bỏ qua việc tạo hồ sơ cơ sở. Cách sử dụng: ./gradlew assemble -Pandroidx.baselineprofile.skipgeneration. (I37fda, b/283447020)

Các thay đổi về API

  • API collectBaselineProfile sẽ luôn tạo các hồ sơ cơ sở ổn định. API collectStableBaselineProfile đã bị xoá và chuyển sang dùng collectBaselineProfile. (I17262, b/281078707)
  • Thay đổi đối số filterPredicate của BaselineProfileRule thành không rỗng, với giá trị mặc định tương đương để hành vi của bộ lọc mặc định trở nên rõ ràng hơn trong tài liệu. (I3816e)

Sửa lỗi

  • Tắt IsolationActivity và tính năng theo dõi dấu vết Perfetto trong dryRunMode để cải thiện đáng kể hiệu suất, vì những tính năng này chiếm phần lớn thời gian chạy. (Ie4f7d)
  • Hỗ trợ lấy mẫu ngăn xếp lệnh gọi trong Macrobenchmark bằng cách sử dụng các đối số kiểm thử đo lường androidx.benchmark.profiling.mode=StackSamplingandroidx.benchmark.profiling.sampleFrequency. (I1d13b, b/282188489)
  • Khắc phục sự cố khi xoá trình đổ bóng trên Android U (API 34), cũng như trên trình mô phỏng. (I031ca, b/274314544)

Phiên bản 1.2.0-alpha14

Ngày 3 tháng 5 năm 2023

Phát hành androidx.benchmark:benchmark-*:1.2.0-alpha14. Phiên bản 1.2.0-alpha14 bao gồm các thay đổi sau.

Sửa lỗi

  • Sửa lỗi FrameTimingMetric bỏ qua các khung hình có mã nhận dạng khung hình không nhất quán. Điều này sẽ khiến một số ảnh động trên các phiên bản nền tảng gần đây (API 31 trở lên) bỏ qua nhiều khung hình trong khi RenderThread đang chuyển động (ví dụ: trong chuyển động gợn sóng). (I747d2, b/279088460)
  • Sửa lỗi phân tích cú pháp trình xử lý theo dõi đối với các dấu vết lớn hơn 64 MB. (Ief831, b/269949822)
  • Sửa lỗi khiến việc tạo hồ sơ cơ sở trên Android U không thành công do dữ liệu đầu ra của lệnh pm dump-profiles có sự khác biệt. (Id1392, b/277645214)
  • Sửa lỗi tập lệnh khoá xung nhịp GPU để so sánh chính xác các chuỗi (I53e54, b/213935715)

Phiên bản 1.2.0-alpha13

Tháng 5 năm 2023

Phát hành androidx.benchmark:benchmark-*:1.2.0-alpha13. Phiên bản 1.2.0-alpha13 bao gồm các thay đổi sau.

Các thay đổi về API

  • Thêm tham số kiểu hồ sơ khi tạo hồ sơ cơ sở để hỗ trợ tính năng hồ sơ khởi động sắp ra mắt (Ie20d7, b/275093123)
  • Thêm API thử nghiệm TraceMetric (mới) để xác định các chỉ số được tuỳ chỉnh hoàn toàn dựa trên nội dung của dấu vết Perfetto. (I4ce31, b/219851406)
  • Thêm chỉ số thử nghiệm để xác định số lượng lỗi trang trong quá trình đo điểm chuẩn. (I48db0)

Phiên bản 1.2.0-alpha12

Ngày 22 tháng 3 năm 2023

Phát hành androidx.benchmark:benchmark-*:1.2.0-alpha12. Phiên bản 1.2.0-alpha12 bao gồm các thay đổi sau.

Tính năng mới

  • Phát hành phiên bản alpha mới của Trình bổ trợ Gradle cho Hồ sơ cơ sở, giúp tạo hồ sơ cơ sở dễ dàng hơn và đơn giản hoá quy trình làm việc của nhà phát triển.

Các thay đổi về API

  • Xoá tính năng hỗ trợ theo dõi dấu vết Perfetto trên API 21 và 22, bao gồm cả các API Microbenchmark và API PerfettoTrace thử nghiệm. Trước phiên bản này, kết nối UiAutomation không đáng tin cậy ở một số thiết bị. (I78e8c)
  • Thêm API thử nghiệm công khai cho PerfettoTraceProcessor để bật tính năng phân tích cú pháp nội dung dấu vết. Đây là một bước tiến hướng tới việc sử dụng các số liệu được tuỳ chỉnh hoàn toàn dựa trên dữ liệu dấu vết Perfetto. (I2659e, b/219851406)

Phiên bản 1.2.0-alpha11

Ngày 8 tháng 3 năm 2023

Phát hành androidx.benchmark:benchmark-*:1.2.0-alpha11. Phiên bản 1.2.0-alpha11 bao gồm các thay đổi sau.

Sửa lỗi

  • Khắc phục sự cố trong MacrobenchmarkRuleBaselineProfileRule khi cài đặt lại hoặc giải nén hồ sơ từ gói ứng dụng có nhiều APK. (I0d8c8, b/270587281)

Phiên bản 1.2.0-alpha10

Ngày 22 tháng 2 năm 2023

Phát hành androidx.benchmark:benchmark-*:1.2.0-alpha10. Phiên bản 1.2.0-alpha10 bao gồm các thay đổi sau.

Tính năng mới

  • Trên Android 14 trở lên, nhờ có một tính năng mới của nền tảng, Macrobenchmark không còn cài đặt lại các ứng dụng đích để đặt lại trạng thái biên dịch. Trước đây, cần có thiết bị bị can thiệp hệ thống hoặc cần xoá toàn bộ trạng thái của ứng dụng (ví dụ: thông tin đăng nhập của người dùng) trước mỗi lần đo điểm chuẩn. (I9b08c, b/249143766)

Sửa lỗi

  • Khắc phục DryRunMode để không còn gặp sự cố với hồ sơ trống do bỏ qua quá trình biên dịch. Thay vào đó, hàm này chạy một lần lặp lại và trích xuất hồ sơ để đảm bảo có nội dung được ghi lại. (I2f05d, b/266403227)
  • Khắc phục sự cố PowerMetric khi kiểm tra sự hiện diện của powerstats ở các cấp độ API cũ. (5faaf9, b/268253898)

Phiên bản 1.2.0-alpha09

Ngày 11 tháng 1 năm 2023

Phát hành androidx.benchmark:benchmark-*:1.2.0-alpha09. Phiên bản 1.2.0-alpha09 bao gồm các thay đổi sau.

Sửa lỗi

  • Bật chế độ truyền đối số đo lường None sang androidx.benchmark.enabledRules để tắt toàn bộ quá trình tạo hồ sơ cơ sở/điểm chuẩn. (I3d7fd, b/258671856)
  • Sửa lỗi ghi lại dấu vết PerfettoTrace trong các mô-đun ứng dụng (tức là APK kiểm thử không tự đo lường) (I12cfc)
  • Sửa thứ tự đối số kéo adb của hồ sơ cơ sở trong đầu ra của Studio (I958d1, b/261781624)
  • Arm emulator API 33 hiện đã được nhận dạng chính xác như khi cố gắng chạy macrobenchmark và sẽ in cảnh báo chính xác. (69133b,b/262209591)
  • Bỏ qua bước kiểm tra mức pin trên các thiết bị không có pin trong Macrobenchmark (fe4114, b/232448937)

Phiên bản 1.2.0-alpha08

Ngày 7 tháng 12 năm 2022

Phát hành androidx.benchmark:benchmark-*:1.2.0-alpha08. Phiên bản 1.2.0-alpha08 bao gồm các thay đổi sau.

Các thay đổi về API

  • Thêm các API thử nghiệm mới PerfettoTrace.record {}PerfettoTraceRule để ghi lại dấu vết Perfetto (còn gọi là Dấu vết hệ thống) như một phần của hoạt động kiểm thử, để kiểm tra hành vi và hiệu suất kiểm thử. (I3ba16)
  • BaselineProfileRule hiện chấp nhận thuộc tính bộ lọc thay vì danh sách tiền tố gói. Điều này giúp hoạt động kiểm thử kiểm soát hoàn toàn việc lọc. (I93240)
  • Thêm một API thử nghiệm BaselineProfileRule.collectStableBaselineProfile. API này sẽ đợi cho đến khi hồ sơ cơ sở ổn định cho N vòng lặp. (I923f3)
  • Thêm khả năng chỉ định tiền tố tên tệp đầu ra khi tạo hồ sơ cơ sở bằng BaselineProfileRule. (I7b59f, b/260318655)

Sửa lỗi

  • Cải thiện độ an toàn cho việc ghi đầu ra tệp, qua đó ngăn các tệp đầu ra bị ngầm ghi/nối thêm, đặc biệt là trên API 21/22. (If8c44, b/227510293)
  • Khắc phục tệp theo dõi đầu ra simpleperf để tạo và đặt tệp đúng cách. Cách làm này cũng thường sửa lỗi gradle không kéo được tệp. (I12a1c, b/259424099)
  • Cải thiện thông báo lỗi trong trình cài đặt hồ sơ khi trình cài đặt hồ sơ quá cũ. Giờ đây, thông báo này sẽ yêu cầu bạn cập nhật phiên bản trình cài đặt hồ sơ (1.2.1) để đo lường hồ sơ cơ sở trên API 31 đến API 33, thay vì cho biết phiên bản này không được hỗ trợ. (Ia517f, b/253519888)
  • Sửa một số lỗi lệnh shell gặp sự cố khi in thông báo cần có API từ 23 trở xuống, bao gồm cả lỗi thiết lập nhị phân ghi lại Perfetto không thành công và lỗi ghi lại dấu vết (Ib6b87, b/258863685)
  • Tự động sắp xếp những quy tắc hồ sơ đã tạo để giảm thiểu số lượng các thay đổi khi chúng thay đổi theo thời gian (khi quy tắc hồ sơ đăng ký kiểm soát nguồn). (Ie2509)
  • Khắc phục sự cố trên các bản dựng bị huỷ quyền quản trị dưới Android 13 (API 33) với thông báo Expected no stderr from echo 3 > /proc/sys/vm/drop_caches (I6c245, b/259508183)

Vấn đề đã biếtMacrobenchmarkScope.dropShaderCache() có thể gặp sự cố do thiếu thông tin đăng ký truyền tin trong tệp kê khai trình cài đặt hồ sơ (chưa được phát hành). (I5c728, b/258619948) Để xử lý lỗi trong profileinstaller:1.3.0-alpha02, hãy thêm nội dung sau vào AndroidManifest.xml của ứng dụng (không phải của điểm chuẩn):

  <!-- workaround bug in profileinstaller 1.3.0-alpha02, remove when updating to alpha03+ -->
  <receiver
    android:name="androidx.profileinstaller.ProfileInstallReceiver"
    android:permission="android.permission.DUMP"
    android:exported="true">
    <intent-filter>
        <action android:name="androidx.profileinstaller.action.BENCHMARK_OPERATION" />
    </intent-filter>
  </receiver>

Phiên bản 1.2.0-alpha07

Ngày 9 tháng 11 năm 2022

Phát hành androidx.benchmark:benchmark-*:1.2.0-alpha07. Phiên bản 1.2.0-alpha07 bao gồm các thay đổi sau.

Các thay đổi về API

  • Thêm PowerMetric API để đo năng lượng và công suất trong Macrobenchmark. (Ife601, b/220183779)
  • Khắc phục MacrobenchmarkScope.dropShaderCache() để thực sự giải phóng bộ nhớ đệm của chương trình đổ bóng. Thao tác này sẽ loại bỏ khoảng 20 mili giây độ nhiễu khỏi điểm chuẩn StartupMode.COLD vì giờ đây, các chương trình đổ bóng sẽ được dọn dẹp sau mỗi vòng lặp. Trước đây, do việc lưu vào bộ nhớ đệm của chương trình đổ bóng có khả năng xảy ra cao hơn trong quá trình khởi động, quá trình biên dịch Partial sử dụng các vòng lặp khởi động có thể báo cáo số liệu không chính xác. Để khắc phục, bạn phải sử dụng thiết bị bị can thiệp hệ thống hoặc dùng profileinstaller:1.3.0-alpha02 trong ứng dụng đích. Để xem các thay đổi về API của thư viện ProfileInstaller, vui lòng tham khảo trang ProfileInstaller 1.30-alpha02. (Ia5171, b/231455742)
  • Thêm TraceSectionMode("label", Mode.Sum), cho phép đo lường tổng thời gian dành cho các phần dấu vết có cùng một nhãn. Ví dụ: TraceSectionMetric("inflate", Mode.Sum) sẽ báo cáo một chỉ số inflateMs cho tổng thời gian trong một macrobenchmark dành cho quá trình tăng cường. Đồng thời, loại bỏ điều kiện về API 29, vì TraceSectionMetric kết hợp với androidx.tracing.Trace đã quay lại dùng các cấp độ API thấp hơn, nhờ việc sử dụng forceEnableAppTracing trong ứng dụng đích. (Id7b68, b/231455742)

Sửa lỗi

  • Cải thiện độ an toàn của tất cả các lệnh shell nội bộ bằng cách xác thực mọi đầu ra/lỗi. (I5984d, b/255402908, b/253094958)
  • Chỉ định thiết bị trong lệnh adb pull của hồ sơ cơ sở để có thể sao chép lệnh kéo nếu nhiều thiết bị được kết nối (tối đa một trình mô phỏng) (I6ac6c, b/223359380)
  • Bổ sung lỗi nếu tệp apk kiểm thử macrobenchmark không được thiết lập dưới dạng tự đo lường. Lỗi này ngăn chặn việc phát hiện macrobenchmark từ bên trong quy trình của ứng dụng đích. Trong quá trình đó, macrobench sẽ không thể biên dịch/huỷ/khởi động nguội ứng dụng hay kiểm soát các quyền truy cập của ứng dụng (I4279b)
  • Khắc phục sự cố trong measureRepeated(), trong đó StartupMode.COLD sẽ không buộc dừng quy trình đích sau setupBlock. Hiện tại, việc setupBlock tương tác với ứng dụng sẽ không khiến quy trình ứng dụng tiếp tục chạy và đo lường khởi động nguội không hợp lệ. (I8ebb7)

Phiên bản 1.2.0-alpha06

Ngày 24 tháng 10 năm 2022

Phát hành androidx.benchmark:benchmark-*:1.2.0-alpha06. Phiên bản 1.2.0-alpha06 bao gồm các thay đổi sau.

Các thay đổi về API

  • BaselineProfileRule không còn yêu cầu can thiệp vào hệ thống trên Android 13 (API 33) và không còn là thử nghiệm nữa. (Ie0a7d, b/250083467, b/253094958)
    • Thay đổi này cũng khắc phục cách đẩy cấu hình của một ứng dụng vào ổ đĩa trên các thiết bị chưa bị can thiệp vào hệ thống, nhưng cần phải cập nhật phần phụ thuộc cho trình cài đặt cấu hình của ứng dụng đích.
    • Để sử dụng BaselineProfileRule hoặc CompilationMode.Partial(warmupIterations) trên một thiết bị đã bị can thiệp vào hệ thống, bạn cũng phải cập nhật ứng dụng đích để dùng androidx.profileinstaller.profileinstaller:1.3.0-alpha01. Việc này giúp đẩy cấu hình vào ổ đĩa đúng cách để chúng có thể được biên dịch/trích xuất.

Sửa lỗi

Phiên bản 1.2.0-alpha05

Ngày 5 tháng 10 năm 2022

Phát hành androidx.benchmark:benchmark-*:1.2.0-alpha05. Phiên bản 1.2.0-alpha05 bao gồm các thay đổi sau.

Sửa lỗi

  • Sửa lỗi bảng chi tiết khung hình trong trình xem dấu vết hệ thống của Studio để theo dõi điểm chuẩn được ghi lại (I3f3ae, b/239677443)
  • Sửa FrameTimingMetric để liệt kê FrameOverrun theo yêu cầu API 31 thay cho 29 (I716dd, b/220702554)
  • Đặt quá trình lặp lại trong BaselineProfileRule và gửi rõ ràng nếu gói mục tiêu chưa được cài đặt (đã được thực hiện cho MacrobenchmarkRule). (Ic09a3, b/227991471)

Phiên bản 1.2.0-alpha04

Ngày 21 tháng 9 năm 2022

Phát hành androidx.benchmark:benchmark-*:1.2.0-alpha04. Phiên bản 1.2.0-alpha04 bao gồm các thay đổi sau.

Tính năng mới

  • Thêm tính năng hỗ trợ cho đối số đo lường dryRunMode.enable vào macrobenchmark (đã có sẵn dạng micro) để phát triển cục bộ nhanh hơn và xác thực tính năng tự động hoá ứng dụng (ví dụ: trong phần gửi trước). Thao tác này sẽ ghi đè số vòng lặp thành 1, bỏ qua bước biên dịch, chặn mọi lỗi cấu hình và tắt tính năng đầu ra của tệp .json đo lường. (Ib51b4, b/175149857)

    Trên dòng lệnh Gradle:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.dryRunMode.enable=true
    

    Trong build.gradle:

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.dryRunMode.enable', 'true'
        }
    }
    

Sửa lỗi

  • Khắc phục StartupTimingMetric để không còn yêu cầu khởi chạy các Hoạt động được đo lường thông qua MacrobenchmarkScope.startActivityAndWait() nữa. Tức là chỉ số này có thể nhận các lượt khởi chạy từ thông báo Context.startActivity(), hoạt động điều hướng dựa trên Hoạt động trong ứng dụng hoặc các lệnh shell. (Ia2de6, b/245414235)
  • Sửa lỗi startActivityAndWait hết thời gian chờ khi cố đợi hoàn tất quá trình khởi chạy trên trình mô phỏng bằng cách giảm mức nghiêm ngặt của tính năng phát hiện khung hình. (Ibe2c6, b/244594339, b/228946895)

Phiên bản 1.2.0-alpha03

Ngày 7 tháng 9 năm 2022

Phát hành androidx.benchmark:benchmark-*:1.2.0-alpha03. Phiên bản 1.2.0-alpha03 bao gồm các thay đổi sau.

Tính năng mới

  • Thêm các API thử nghiệm để sử dụng BenchmarkState một cách độc lập, tách biệt với BenchmarkRule/JUnit4. (Id478f, b/228489614)

Sửa lỗi

  • Thêm tính năng dự phòng Leanback cho startActivityAndWait. (01ed77, b/242899915)

Phiên bản 1.2.0-alpha02

Ngày 24 tháng 8 năm 2022

Phát hành androidx.benchmark:benchmark-*:1.2.0-alpha02. Phiên bản 1.2.0-alpha02 bao gồm các thay đổi sau.

Các thay đổi về API

  • Mặc định dùng am force stop cho MacrobenchmarkScope.killProcess(), ngay cả khi đã bị can thiệp vào hệ thống, ngoại trừ trong quá trình tạo Hồ sơ cơ sở. Bạn có thể ghi đè đối số này bằng đối số boolean tuỳ chọn. (02cce9, b/241214097)

Sửa lỗi

  • Hỗ trợ tạo hồ sơ cơ sở cho các Ứng dụng hệ thống. (I900b8, b/241214097)
  • Hỗ trợ kiểm tra chỉ số nguồn ODPM trên thiết bị chưa bị can thiệp vào hệ thống. (a38c78, b/229623230)

Phiên bản 1.2.0-alpha01

Ngày 27 tháng 7 năm 2022

Phát hành androidx.benchmark:benchmark-*:1.2.0-alpha01. Phiên bản 1.2.0-alpha01 bao gồm các thay đổi sau.

Tính năng mới

  • Thành phần tracing-perfetto-common mới cho phép tạo công cụ bật tính năng theo dõi SDK Perfetto trong ứng dụng hiển thị nó (I2cc7f)
  • Thêm đối số đo lường androidx.benchmark.enabledRules để cho phép lọc macrobenchmark chỉ chạy các điểm chuẩn hoặc chỉ tạo hồ sơ cơ sở. Truyền 'Macrobenchmark' hoặc 'BaselineProfile' để chỉ chạy một loại thử nghiệm, ví dụ như khi tạo BaselineProfiles trên trình mô phỏng. Danh sách được phân tách bằng dấu phẩy cũng được hỗ trợ. (I756b7, b/230371561)

    Ví dụ: tệp build.gradle của macrobenchmark của bạn:

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile'
        }
    }
    

    Hoặc từ dòng lệnh Gradle:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
    

Thay đổi về API

  • Thêm PowerMetric mới để đo lường các tác vụ điện và năng lượng trong điểm chuẩn. (I9f39b, b/220183779)
  • Thêm chế độ biên dịch mới CompilationMode.Ignore để bỏ qua thao tác đặt lại và biên dịch hồ sơ. (Ibbcf8, b/230453509)
  • Thêm tham số mới vào BaselineProfileRule#collectBaselineProfile để lọc tệp đầu ra theo tên gói (If7338, b/220146561)
  • Cho phép nhà phát triển xả thiết bị để đo lường mức tiêu thụ điện năng. (I6a6cb)
  • Thêm chức năng xoá bộ nhớ đệm của chương trình đổ bóng trong MacrobenchmarkScope. (I32122)
  • Cho phép các nhà phát triển định cấu hình hiển thị loại chỉ số và nêu chi tiết các danh mục hệ thống phụ mong muốn. (I810c9)
  • Trước đây, UnsupportedOperationException được tạo trong điểm chuẩn nếu chạy trên một thiết bị không được hỗ trợ. Hiện tại, UOE chỉ xảy ra nếu bạn sử dụng chỉ số này trên thiết bị không được hỗ trợ (chẳng hạn như PowerMetric.configure). (I5cf20, b/227229375)
  • Thêm TotalPowerMetricTotalEnergyMetric để đo tổng công suất và năng lượng trong từng danh mục hệ thống theo macrobenchmark. (I3b26b, b/224557371)

Sửa lỗi

  • Khắc phục sự cố khiến các phương thức biên dịch không được đặt lại chính xác giữa mỗi macrobenchmark trên các bản dựng bị huỷ quyền quản trị thiết bị. Rất tiếc, việc này yêu cầu bạn cài đặt lại tệp apk cho mỗi vòng lặp. Thao tác này sẽ xoá dữ liệu ứng dụng cho mỗi macrobenchmark. (I31c74, b/230665435)
  • Khắc phục sự cố các bản ghi theo dõi trên API 21/22 (If7fd6, b/227509388, b/227510293, b/227512788)
  • Kiểm tra toàn bộ hoạt động chạy khi hoàn thành để khắc phục sự cố ngoại lệ "Không thể đọc bất kỳ chỉ số nào" trong macrobenchmark khởi động. (Ia517c)

Phiên bản 1.1.1

Phiên bản 1.1.1

Ngày 9 tháng 11 năm 2022

Phát hành androidx.benchmark:benchmark-*:1.1.1. Phiên bản 1.1.1 bao gồm các thay đổi sau.

Sửa lỗi

  • Sửa lỗi android.system.ErrnoException: open failed: EACCES có thể xảy ra trên một số thiết bị Android11 (API 30) trở lên. Đây là tuyển tập phần sửa lỗi từ 1.2.0-alpha01. (aosp/2072249)

Phiên bản 1.1.0

Phiên bản 1.1.0

Ngày 15 tháng 6 năm 2022

Phát hành androidx.benchmark:benchmark-*:1.1.0. Phiên bản 1.1.0 bao gồm các thay đổi sau.

  • Phiên bản này giống với androidx.benchmark:benchmark-*:1.1.0-rc03.

Thay đổi quan trọng kể từ phiên bản 1.0.0

Phiên bản 1.1.0-rc03

Ngày 1 tháng 6 năm 2022

Phát hành androidx.benchmark:benchmark-*:1.1.0-rc03. Phiên bản 1.1.0-rc03 bao gồm các thay đổi sau.

Sửa lỗi

  • Tránh cài đặt lại gói mục tiêu trên mỗi vòng lặp điểm chuẩn. ( aosp/​​2093027, b/231976084)

  • Xoá độ trễ 300ms khỏi pressHome(). (aosp/2086030, b/231322975)

  • Cải thiện tốc độ vòng lặp của Macrobenchmark bằng cách tối ưu hoá các lệnh Shell được sử dụng nâng cao. (aosp/2086023, b/231323582)

  • Hỗ trợ các Thiết bị Gradle được quản lý khi tạo Hồ sơ cơ sở bằng Macrobenchmark. (aosp/2062228, b/228926421)

Phiên bản 1.1.0-rc02

Ngày 11 tháng 5 năm 2022

Phát hành androidx.benchmark:benchmark-*:1.1.0-rc02. Phiên bản 1.1.0-rc02 bao gồm các thay đổi sau.

  • Xin lưu ý rằng bản phát hành này bao gồm thay đổi về hành vi, vì các ứng dụng hiện được cài đặt lại hoàn toàn giữa mỗi điểm chuẩn để đảm bảo việc đo lường chính xác.

Sửa lỗi/Thay đổi hành vi

  • Đã khắc phục sự cố, trong đó việc biên dịch ứng dụng không được đặt lại chính xác giữa các macrobenchmark và hoàn toàn không được đặt lại trên các bản dựng bị huỷ quyền quản trị thiết bị. Điều này khắc phục được các trường hợp chạy nhiều thử nghiệm dẫn đến CompilationMode có ít hoặc không ảnh hưởng đến việc đo lường. Để giải quyết vấn đề đó, ứng dụng mục tiêu hiện sẽ được cài đặt lại hoàn toàn từng phương thức thử nghiệm. Thao tác này sẽ xoá dữ liệu ứng dụng giữa mỗi macrobenchmark. (I31c74, b/230665435)

  • Vì việc này ngăn ứng dụng thiết lập trạng thái trước khi kiểm thử nên giờ đây, bạn có thể bỏ qua bước biên dịch/cài đặt lại để bật tính năng này. Ví dụ: bạn có thể biên dịch đầy đủ mục tiêu bằng lệnh shell cmd package compile -f -m speed <package> và sau đó bỏ qua bước biên dịch của macrobenchmark.

    Ví dụ: tệp build.gradle của macrobenchmark của bạn:

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.compilation.enabled, 'false'
        }
    }
    

    Hoặc từ dòng lệnh Gradle:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=false
    
  • Cho phép chia sẻ một mô-đun giữa các macrobenchmark và các thử nghiệm tạo hồ sơ cơ sở bằng cách thêm đối số đo lường androidx.benchmark.enabledRules. Truyền 'Macrobenchmark' hoặc 'BaselineProfile' để chỉ chạy một loại thử nghiệm, ví dụ như khi tạo BaselineProfiles trên trình mô phỏng. (I756b7, b/230371561)

    Ví dụ: tệp build.gradle của macrobenchmark của bạn:

    android {
        defaultConfig {
            testInstrumentationRunnerArgument 'androidx.benchmark.enabledRules', 'BaselineProfile'
        }
    }
    

    Hoặc từ dòng lệnh Gradle:

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
    

Phiên bản 1.1.0-rc01

Ngày 20 tháng 4 năm 2022

Phát hành androidx.benchmark:benchmark-*:1.1.0-rc01. Phiên bản 1.1.0-rc01 bao gồm các thay đổi sau.

Sửa lỗi

  • Giờ đây, các đường liên kết xuất hồ sơ cơ sở trong Android Studio hiện sử dụng một tên tệp duy nhất. Bằng cách đó, đầu ra luôn phản ánh kết quả mới nhất khi sử dụng BaselineProfileRule. ( aosp/2057008, b/228203086 )

Phiên bản 1.1.0-beta06

Ngày 6 tháng 4 năm 2022

Phát hành androidx.benchmark:benchmark-*:1.1.0-beta06. Phiên bản 1.1.0-beta06 bao gồm các thay đổi sau.

Sửa lỗi

  • Khắc phục sự cố các bản ghi theo dõi trên API 21/22 (If7fd6, b/227509388)
  • Kiểm tra toàn bộ hoạt động chạy khi hoàn thành để khắc phục sự cố ngoại lệ "Không thể đọc bất kỳ chỉ số nào" trong acrobenchmark khởi động. (Ia517c)
  • Sửa chỉ số khởi động cho Macrobenchmark khi sử dụng CompilationMode.None(). Trước thay đổi này, CompilationMode.Partial() có vẻ chậm hơn Compilation.None(). (611ac9).

Phiên bản 1.1.0-beta05

Ngày 23 tháng 3 năm 2022

Phát hành androidx.benchmark:benchmark-*:1.1.0-beta05. Phiên bản 1.1.0-beta05 bao gồm các thay đổi sau.

Sửa lỗi

  • Buộc tắt gói sau khi bỏ qua bước cài đặt hồ sơ khi sử dụng CompilationMode.None. (aosp/1991373)
  • Khắc phục vấn đề khiến Macrobenchmark không thể thu thập các chỉ số khởi động khi sử dụng StartupMode.COLD. (aosp/2012227 b/218668335)

Phiên bản 1.1.0-beta04

Ngày 23 tháng 2 năm 2022

Phát hành androidx.benchmark:benchmark-*:1.1.0-beta04. Phiên bản 1.1.0-beta04 bao gồm các thay đổi sau.

Sửa lỗi

  • Khắc phục những chỉ số còn thiếu trên Android 10 và NoSuchElementException do tên quá trình không được thu thập chính xác trong các dấu vết. (Ib4c17, b/218668335)

  • Sử dụng PowerManager để phát hiện điểm tiết lưu nhiệt trên Q (API cấp 29) trở lên. Điều này làm giảm đáng kể tần suất dương tính giả trong quá trình phát hiện điểm điều tiết nhiệt (thử lại quá trình đo điểm chuẩn sau thời gian chờ 90 giây) và tăng tốc đáng kể các quá trình đo điểm chuẩn dựa trên bản dựng của người dùng. PowerManager cũng cung cấp tính năng phát hiện tiết lưu ngay cả khi xung nhịp bị khoá (nếu xung nhịp bị khoá ở mức quá cao so với môi trường thực tế của thiết bị). (I9c027, b/217497678, b/131755853)

  • Lọc cấu hình lấy mẫu Simpleperf thành luồng measureRepeated để chỉ đơn giản hoá việc kiểm tra (Ic3e12, b/217501939)

  • Hỗ trợ các chỉ số từ các quy trình phụ được đặt tên theo UI trong các ứng dụng đa quá trình (Ice6c0, b/215988434)

  • Lọc các quy tắc trong Hồ sơ cơ sở để nhắm mục tiêu Android 9 (SDK 28). aosp/1980331 b/216508418

  • Bỏ qua bước cài đặt Hồ sơ khi sử dụng Compilation.None(). Ngoài ra, báo cáo các cảnh báo khi ứng dụng đang dùng phiên bản cũ hơn của androidx.profileinstaller và trình bổ trợ Android cho Gradle. aosp/1977029

Phiên bản 1.1.0-beta03

Ngày 9 tháng 2 năm 2022

Phát hành androidx.benchmark:benchmark-*:1.1.0-beta03. Phiên bản 1.1.0-beta03 bao gồm các thay đổi sau.

Các thay đổi về API

  • Thêm AudioUnderrunMetric vào thư viện macrobenchmark dưới cờ thử nghiệm để cho phép phát hiện âm thanh dưới mức (Ib5972)
  • BaselineProfileRule không còn chấp nhận khối setup vì khối này có chức năng hoạt động giống như profileBlock. (Ic7dfe, b/215536447)

    Ví dụ:

    @Test
    fun collectBaselineProfile() {
        baselineRule.collectBaselineProfile(
            packageName = PACKAGE_NAME,
            setupBlock = {
                startActivityAndWait()
            },
            profileBlock = {
                // ...
            }
        )
    }
    
    @Test
    fun collectBaselineProfile() {
        baselineRule.collectBaselineProfile(
            packageName = PACKAGE_NAME,
            profileBlock = {
                startActivityAndWait()
                // ...
            }
        )
    }
    

Sửa lỗi

  • Khắc phục vấn đề không cập nhật được dấu vết của hồ sơ microbench trong các lần chạy tiếp theo khi liên kết những dữ liệu đó trong đầu ra của Studio (I5ae4d, b/214917025)
  • Ngăn chặn các lệnh shell biên dịch trên API 23 (Ice380)
  • Đổi tên FrameCpuTime -> FrameDurationCpu, FrameUiTime -> FrameDurationUi để làm rõ rằng đây là thời lượng chứ không phải dấu thời gian và để khớp với các tiền tố. (I0eba3, b/216337830)

Phiên bản 1.1.0-beta02

Ngày 26 tháng 1 năm 2022

Phát hành androidx.benchmark:benchmark-*:1.1.0-beta02. Phiên bản 1.1.0-beta02 bao gồm các thay đổi sau.

Sửa lỗi

  • Các kết quả Lấy mẫu ngăn xếp (Stack Sampling) và Cấu hình tìm dấu vết phương thức (Method Tracing Profile) của Microbenchmark hiện được liên kết trong đầu ra của Studio, tương tự như các kết quả lập hồ sơ khác và không ngăn chặn chỉ số phân bổ. (Idcb65, b/214440748, b/214253245)
  • BaselineProfileRule hiện in lệnh adb pull trong đầu ra logcat và Studio để kéo tệp văn bản BaselineProfile đã tạo. (f08811)

Phiên bản 1.1.0-beta01

Ngày 12 tháng 1 năm 2022

Phát hành androidx.benchmark:benchmark-*:1.1.0-beta01. Phiên bản 1.1.0-beta01 bao gồm các thay đổi sau.

Sửa lỗi

  • Sửa lỗi bỏ qua việc bật đối số trình phân tích tài nguyên. (I37373, b/210619998)
  • Xoá CompliationModes không còn sử dụng (I98186, b/213467659)
  • Chuyển đối số hồ sơ cơ sở của CompilationMode.Partial sang enum để cho rõ ràng hơn. (Id67ea)

Phiên bản 1.1.0-alpha13

Ngày 15 tháng 12 năm 2021

Phát hành androidx.benchmark:benchmark-*:1.1.0-alpha13. Phiên bản 1.1.0-alpha13 bao gồm các thay đổi sau.

Các thay đổi về API

  • Thêm tính năng Theo dõi hệ thống sử dụng ít tài nguyên vào đầu ra microbench trên Android Q (API 29 trở lên). Lưu ý rằng tính năng này hiện không thu thập dữ liệu theo dõi tuỳ chỉnh (thông qua các API Jetpack android.os.Trace hoặc androidx.tracing) để tránh ảnh hưởng đến kết quả. Tính năng theo dõi này hữu ích trong việc chẩn đoán sự bất ổn định, đặc biệt là từ các nguồn ngoài phạm vi đo điểm chuẩn. (I298be, b/205636583, b/145598917)
  • Làm rõ CompilationModes thành ba lớp – Toàn bộ (Full), Không có (None), Một phần (Partial). Trước đó, việc đặt tên theo các đối số biên dịch mã (hiện tại chúng tôi coi như chi tiết triển khai) và các tính năng đã dẫn đến sự không nhất quán. Điều này giúp cho sự đánh đổi, kết hợp tiềm năng và hành vi trên các phiên bản nền tảng rõ ràng hơn. (I3d7bf, b/207132597)
  • Việc thiết lập và đo lường hiện luôn đi đôi với nhau, theo thứ tự. Bạn hiện có thể truy vấn tên và vòng lặp của gói (mặc dù vòng lặp này có thể là null trong một số trường hợp khởi động nhất định). (Id3b68, b/208357448, b/208369635)

Sửa lỗi

  • Khắc phục lỗi CompilationMode.Speed được coi là None một cách không chính xác (I01137)

Phiên bản 1.1.0-alpha12

Ngày 17 tháng 11 năm 2021

Phát hành androidx.benchmark:benchmark-*:1.1.0-alpha12. Phiên bản 1.1.0-alpha12 bao gồm các thay đổi sau.

Tính năng mới

  • Thêm TraceSectionMetric thử nghiệm dành cho các phép đo thời gian dựa trên dấu vết tuỳ chỉnh. (I99db1, b/204572664)

Sửa lỗi

  • Đánh thức thiết bị trong mỗi vòng lặp để đảm bảo giao diện người dùng có thể được kiểm thử – yêu cầu phải tắt màn hình khoá. (Ibfa28, b/180963442)
  • Khắc phục nhiều sự cố trong chế độ lập hồ sơ StackSampling trên các trình mô phỏng và các thiết bị không bị can thiệp vào hệ thống (Icdbda, b/202719335)
  • Xoá thời gian ngủ 0,5 giây vào cuối mỗi vòng lặp. Nếu sự thay đổi này dẫn đến việc thiếu các chỉ số, vui lòng báo cáo lỗi. (Iff6aa)
  • Giảm nguy cơ dữ liệu bị bỏ qua và hao tổn bộ nhớ do hoạt động theo dõi dấu vết (Id2544, b/199324831, b/204448861) thấp hơn
  • Giảm kích thước dấu vết xuống xấp xỉ 40% bằng cách chuyển sang định dạng lưu trữ sched nhỏ gọn. (Id5fb6, b/199324831)
  • Đã cập nhật các phương thức triển khai các chỉ số khởi động để luôn kết thúc cùng lúc với luồng kết xuất. Các phương thức triển khai này sẽ nhất quán hơn trên các phiên bản nền tảng và ánh xạ chặt chẽ hơn với các phép đo trong ứng dụng. (Ic6b55)

Phiên bản 1.1.0-alpha11

Ngày 3 tháng 11 năm 2021

Phát hành androidx.benchmark:benchmark-*:1.1.0-alpha11. Phiên bản 1.1.0-alpha11 bao gồm các thay đổi sau.

Các thay đổi về API

  • Macrobenchmark hiện có minSdkVersion23. (If2655)
  • Thêm một BaselineProfileRule thử nghiệm mới có khả năng tạo hồ sơ cơ sở cho hành trình trọng yếu của người dùng trên ứng dụng. Tài liệu chi tiết ở phần tiếp theo. (Ibbefa, b/203692160)
  • Xoá biến thể giao diện measureRepeated (trước đó được thêm cho các lệnh gọi Java), vì biến thể này gây ra sự không rõ ràng trong việc hoàn tất/giải quyết phương thức. Các lệnh gọi Java sẽ lại cần trả về Unit.Instance từ measureRepeated. Hãy báo cáo lỗi nếu điều này gây bất tiện cho bạn, chúng tôi có thể xem xét vấn đề này trong một phiên bản sắp tới. (Ifb23e, b/204331495)

Phiên bản 1.1.0-alpha10

Ngày 27 tháng 10 năm 2021

Phát hành androidx.benchmark:benchmark-*:1.1.0-alpha10. Phiên bản 1.1.0-alpha10 bao gồm các thay đổi sau.

Các thay đổi về API

  • Điều chỉnh ngược dòng để StartupTimingMetric hoạt động trở lại ở API 23. Phương thức triển khai mới này cũng xử lý tốt hơn việc reportFullyDrawn() chờ cho đến khi nội dung tương ứng được hiển thị. (If3ac9, b/183129298)
  • Thêm JvmOverloads vào nhiều phương thức MacrobenchmarkScope dành cho các lệnh gọi Java. (I644fe, b/184546459)
  • Cung cấp hàm MacrobenchmarkRule.measureRepeated thay thế dùng một Consumer<MacrobenchmarkScope> với mục đích sử dụng thành ngữ lập trình trong ngôn ngữ Java. (If74ab, b/184546459)

Sửa lỗi

  • Khắc phục những dấu vết không bắt đầu đủ sớm và thiếu dữ liệu chỉ số. Việc này dự kiến sẽ khắc phục các ngoại lệ "Không thể đọc bất kỳ chỉ số nào trong quá trình đo điểm chuẩn" do thư viện tự gây ra. (I6dfcb, b/193827052, b/200302931)
  • FrameNegativeSlack đã đổi tên thành FrameOverrun để làm rõ ý nghĩa – khung hình đã dùng bao nhiêu phần trăm trong quỹ thời gian. (I6c2aa, b/203008701)

Phiên bản 1.1.0-alpha09

Ngày 13 tháng 10 năm 2021

Phát hành androidx.benchmark:benchmark-*:1.1.0-alpha09. Phiên bản 1.1.0-alpha9 bao gồm các thay đổi sau.

Sửa lỗi

  • Hỗ trợ bỏ qua việc lưu trang vào bộ nhớ đệm của Kernel mà không cần can thiệp vào hệ thống trên API 31/S trở lên, giúp tăng độ chính xác của các lần khởi chạy StartupMode.COLD. (Iecfdb, b/200160030)

Phiên bản 1.1.0-alpha08

Ngày 29 tháng 9 năm 2021

Phát hành androidx.benchmark:benchmark-*:1.1.0-alpha08. Phiên bản 1.1.0-alpha08 bao gồm các thay đổi sau.

Các thay đổi về API

  • Cho phép cuộn các macrobenchmark để chạy trở lại API 23 (If39c2, b/183129298)
  • Thêm kiểu chỉ số được lấy mẫu mới vào giao diện người dùng và đầu ra JSON, tập trung vào tỷ lệ phần trăm của nhiều mẫu trên mỗi vòng lặp. (I56247, b/199940612)
  • Chuyển sang các chỉ số dấu phẩy động trong toàn bộ các thư viện đo điểm chuẩn (bị cắt bớt trong giao diện người dùng Studio). (I69249, b/197008210)

Phiên bản 1.1.0-alpha07

Ngày 1 tháng 9 năm 2021

Phát hành androidx.benchmark:benchmark-*:1.1.0-alpha07. Phiên bản 1.1.0-alpha07 bao gồm các thay đổi sau.

Các thay đổi về API

  • Đã tăng API tối thiểu lên 21 để phản ánh cấp API thấp nhất dự định sẽ được hỗ trợ trong tương lai. API tối thiểu được hỗ trợ tiếp tục được truyền thông qua RequiredApi() và hiện là 29 (I440d6, b/183129298)

Sửa lỗi

  • Khắc phục ProfileInstaller để giúp các ứng dụng dễ dàng sử dụng hồ sơ cơ sở để chạy MacroBenchmark bằng cách sử dụng CompilationMode.BaselineProfile. (I42657, b/196074999) LƯU Ý: đồng thời yêu cầu cập nhật lên androidx.profileinstaller:profileinstaller:1.1.0-alpha04 trở lên.
  • Các quá trình đo điểm chuẩn StartupMode.COLD + CompilationMode.None hiện ổn định hơn. (I770cd, b/196074999)

Phiên bản 1.1.0-alpha06

Ngày 18 tháng 8 năm 2021

Phát hành androidx.benchmark:benchmark-*:1.1.0-alpha06. Phiên bản 1.1.0-alpha06 bao gồm các thay đổi sau.

Các thay đổi về API

  • Thêm đối số đo lường androidx.benchmark.iterations để cho phép ghi đè số vòng lặp theo cách thủ công khi kiểm thử/tạo hồ sơ cục bộ. (6188be, b/194137879)

Sửa lỗi

  • Đã chuyển Simpleperf sang làm trình phân tích mẫu mặc định trên API 29 trở lên. (Ic4b34, b/158303822)

Vấn đề đã biết

  • CompilationMode.BaselineProfile đang trong quá trình phát triển. Hiện tại, tránh sử dụng tính năng này để đánh giá hồ sơ.

Phiên bản 1.1.0-alpha05

Ngày 4 tháng 8 năm 2021

Phát hành androidx.benchmark:benchmark-*:1.1.0-alpha05. Phiên bản 1.1.0-alpha05 bao gồm các thay đổi sau.

1.1.0-alpha04 đã bị huỷ bỏ trước khi phát hành do xảy ra một số sự cố rải rác. b/193827052

Các thay đổi về API

  • Đã chuyển startActivityAndWait sang gọi hàm khởi chạy thông qua am start. Thao tác này giúp giảm thời gian lặp lại của mỗi phép đo khoảng 5 giây nhưng đổi lại sẽ không còn hỗ trợ vùng dữ liệu đóng gói ý định (intent parcelable) nữa. (I5a6f5, b/192009149

Sửa lỗi

  • Giảm mức độ tích cực của quá trình phát hiện điểm điều tiết nhiệt và tính toán lại mức cơ sở nếu thường xuyên phát hiện điểm điều tiết (throttle). (I7327b)
  • Chỉnh sửa FrameTimingMetric để hoạt động trên Android S beta (Ib60cc, b/193260119)
  • Sử dụng một EmptyActivity để chuyển ứng dụng mục tiêu khỏi trạng thái buộc dừng (force-stopped state) để hỗ trợ CompilationMode.BaselineProfile tốt hơn. (Id7cac, b/192084204)
  • Đã thay đổi phần mở rộng tệp theo dõi thành .perfetto-trace để phù hợp với tiêu chuẩn của nền tảng. (I4c236, b/174663039)
  • Hiện tại, StartupTimingMetric sẽ cho ra chỉ số "fullyDrawnMs" để đo lường thời gian cho đến khi ứng dụng hoàn tất quá trình kết xuất. Để khai báo chỉ số này cho ứng dụng, hãy gọi Activity.reportFullyDrawn khi nội dung ban đầu đã sẵn sàng, chẳng hạn như khi các mục trong danh sách ban đầu được tải xong từ cơ sở dữ liệu hoặc mạng. (bạn có thể sử dụng phương thức reportFullyDrawn mà không cần kiểm tra phiên bản của bản dựng trên ComponentActivity). Lưu ý rằng bạn phải chạy bài kiểm thử đủ lâu để thu thập được chỉ số (startActivityAndWait không đợi reportFullyDrawn). (If1141, b/179176560)
  • Giảm tiêu hao tài nguyên của việc thêm siêu dữ liệu giao diện người dùng vào dấu vết hơn 50 mili giây (Ic8390, b/193923003)
  • Tần suất thăm dò tăng đáng kể khi ngừng theo dõi. Chẳng hạn như: có thể làm giảm thời gian chạy quá trình đo điểm chuẩn khi khởi động xuống hơn 30% (Idfbc1, b/193723768 )

Phiên bản 1.1.0-alpha03

Ngày 16 tháng 6 năm 2021

Phát hành androidx.benchmark:benchmark-*:1.1.0-alpha03. Phiên bản 1.1.0-alpha03 bao gồm các thay đổi sau.

Tính năng mới

Sửa lỗi

  • Mã Gradle mẫu để chặn các lỗi điểm chuẩn (benchmark error) đã được cập nhật để sử dụng một API không bị từ chối có cú pháp hỗ trợ cả người dùng .gradle.kts.

    Ví dụ:

    testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR,LOW-BATTERY"
    

Phiên bản 1.1.0-alpha02

Ngày 18 tháng 5 năm 2021

Benchmark phiên bản 1.1.0-alpha02 mang đến một thành phần quan trọng cho việc đo điểm đo điểm chuẩn – Macrobenchmark. Ngoài tính năng đo điểm chuẩn cho phép bạn đo các vòng lặp của CPU, tính năng macrobenchmark còn cho phép bạn đo lường các lượt tương tác trên toàn ứng dụng như khởi động và cuộn, đồng thời thu thập dấu vết. Để biết thêm thông tin, hãy xem tài liệu về thư viện.

Phát hành androidx.benchmark:benchmark-*:1.1.0-alpha02. Phiên bản 1.1.0-alpha02 bao gồm các thay đổi sau.

Tính năng mới

Thêm các cấu phần phần mềm Macrobenchmark (androidx.benchmark:benchmark-macro-junit4androidx.benchmark:benchmark-macro)

  • Thu thập các chỉ số hiệu suất khởi động, cuộn/ảnh động từ ứng dụng của bạn, cục bộ hoặc trong CI
  • Thu thập và kiểm tra dấu vết từ trong Android Studio

Sửa lỗi

  • Giải quyết vấn đề về quyền truy cập môi trường shell với thư mục đầu ra trên Android 12 (Lưu ý – có thể yêu cầu cập nhật Trình bổ trợ Android cho Gradle lên phiên bản 7.0.0 canary và cập nhật Android Studio lên phiên bản Arctic Fox (2020.3.1) để tiếp tục thu thập tệp đầu ra trên các thiết bị bị ảnh hưởng). (Icb039)
  • Hỗ trợ lưu cấu hình vào bộ nhớ đệm trong BenchmarkPlugin (6be1c1, b/159804788)
  • Đơn giản hoá dữ liệu đầu ra của tệp – bật theo mặc định, trong một thư mục không yêu cầu requestLegacyExternalStorage=true (8b5a4d, b/172376362)
  • Khắc phục các cảnh báo logcat trong thư viện in về việc không tìm thấy luồng JIT trên các phiên bản nền tảng mà luồng này không có mặt. (I9cc63, b/161847393)
  • Sửa lỗi để có thể đọc tần số tối đa của thiết bị. (I55c7a)

Phiên bản 1.1.0-alpha01

Ngày 10 tháng 6 năm 2020

Phát hành androidx.benchmark:benchmark-common:1.1.0-alpha01, androidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01androidx.benchmark:benchmark-junit4:1.1.0-alpha01. Phiên bản 1.1.0-alpha01 bao gồm các thay đổi sau.

Tính năng mới của phiên bản 1.1

  • Mô-đun Allocation Metric (Chỉ số phân bổ) – Benchmark (Điểm chuẩn) hiện sẽ chạy thêm một giai đoạn sau khi khởi động và định thời gian, nắm bắt số lượng phân bổ. Các mức phân bổ có thể gây ra vấn đề về hiệu suất trên các nền tảng phiên bản cũ hơn (140ns trong O trở thành 8ns trong M – được đo trên Nexus5X, với xung nhịp bị khoá). Chỉ số này được hiển thị trong đầu ra của Bảng điều khiển Android Studio, cũng như trong
  • Hỗ trợ lập hồ sơ – Hiện tại, bạn có thể thu thập dữ liệu cấu hình để chạy quá trình đo điểm chuẩn nhằm kiểm tra nguyên nhân khiến mã của bạn chạy chậm. Benchmark hỗ trợ thu thập dữ liệu theo dõi phương thức hoặc dữ liệu lấy mẫu phương thức từ ART. Bạn có thể kiểm tra các tệp này bên trong Android Studio bằng Trình phân tích tài nguyên (Profiler), bằng cách sử dụng Tệp > Mở (File > Open).
  • Trình bổ trợ Benchmark cho Gradle hiện cung cấp các chế độ mặc định để thiết lập đơn giản hơn:
    • testBuildType được thiết lập để phát hành theo mặc định, để tránh dùng các phần phụ thuộc có tích hợp mức độ sử dụng mã. buildType sẽ phát hành cũng được định cấu hình như buildType mặc định, cho phép Android Studio tự động chọn đúng biến thể bản dựng khi mở dự án lần đầu tiên. (b/138808399)
    • signingConfig.debug được dùng làm cấu hình ký tên mặc định (b/153583269)

** Sửa lỗi **

  • Giảm đáng kể mức hao tổn tài nguyên do chuyển đổi khởi động, trong đó phép đo đầu tiên của từng quá trình đo điểm chuẩn tốn nhiều tài nguyên hơn so với các phép đo khác. Vấn đề này thể hiện rõ ràng hơn ở những quá trình đo điểm chuẩn rất nhỏ (1 micro giây hoặc ít hơn). (b/142058671)
  • Đã sửa lỗi InstrumentationResultParser khi chạy đo điểm chuẩn từ dòng lệnh. (I64988, b/154248456)

Vấn đề đã biết

  • Dòng lệnh, các lệnh gọi gradle của mô-đun Benchmark không trực tiếp in ra kết quả. Bạn có thể giải quyết vấn đề này bằng cách chạy qua Studio hoặc phân tích cú pháp tệp đầu ra JSON để có được kết quả.
  • Mô-đun báo cáo đo điểm chuẩn không lấy được báo cáo từ các thiết bị đã cài đặt một ứng dụng có applicationId kết thúc bằng "android" hoặc "download" (không phân biệt chữ hoa chữ thường). Người dùng gặp phải vấn đề này nên nâng cấp Trình bổ trợ Android cho Gradle lên 4.2-alpha01 trở lên.

Phiên bản 1.0.0

Benchmark Phiên bản 1.0.0

Ngày 20 tháng 11 năm 2019

Phát hành androidx.benchmark:benchmark-common:1.0.0, androidx.benchmark:benchmark-gradle-plugin:1.0.0androidx.benchmark:benchmark-junit4:1.0.0 mà không có thay đổi nào so với phiên bản 1.0.0-rc01. Phiên bản 1.0.0 bao gồm các thay đổi sau.

Tính năng chính của phiên bản 1.0.0

Thư viện Đo điểm chuẩn (Benchmark) cho phép bạn viết phương thức đo điểm chuẩn hiệu suất của mã ứng dụng và nhanh chóng nhận được kết quả.

Thư viện này ngăn ngừa các vấn đề về cấu hình thời gian chạy và bản dựng, đồng thời giúp ổn định hiệu suất của thiết bị để đảm bảo các kết quả đo lường là chính xác và nhất quán. Chạy các quá trình đo điểm chuẩn trực tiếp trong Android Studio hoặc trong tính năng Tích hợp liên tục để quan sát hiệu suất của mã theo thời gian và tránh hiện tượng hồi quy.

Các tính năng chính bao gồm:

  • Độ ổn định của xung nhịp
  • Tự động phân luồng ưu tiên
  • Hỗ trợ kiểm tra hiệu suất của giao diện người dùng, chẳng hạn như trong Mẫu RecyclerView
  • Vòng lặp khởi động và nhận biết JIT
  • Đầu ra đối chuẩn JSON dành cho việc xử lý hậu kỳ

Phiên bản 1.0.0-rc01

Ngày 23 tháng 10 năm 2019

Phát hành androidx.benchmark:benchmark-common:1.0.0-rc01, androidx.benchmark:benchmark-gradle-plugin:1.0.0-rc01androidx.benchmark:benchmark-junit4:1.0.0-rc01. Phiên bản 1.0.0-rc01 bao gồm các thay đổi sau.

Tính năng mới

  • Thêm tính năng theo dõi systrace vào các mô-đun benchmark (đo điểm chuẩn)

Sửa lỗi

  • Khắc phục vấn đề không ổn định của chỉ số, trong đó JIT sẽ không hoàn tất trước khi khởi động do bị gỡ bỏ ưu tiên (deprioritization) (b/140773023)
  • Hợp nhất thư mục đầu ra JSON trên Trình bổ trợ Android cho Gradle 3.5 và 3.6

Phiên bản 1.0.0-beta01

Ngày 9 tháng 10 năm 2019

Phát hành androidx.benchmark:benchmark-common:1.0.0-beta01, androidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01androidx.benchmark:benchmark-junit4:1.0.0-beta01. Phiên bản 1.0.0-beta01 bao gồm các thay đổi sau.

Tính năng mới

  • Chạy chương trình dọn rác bộ nhớ trước mỗi lần khởi động để giảm tải áp lực bộ nhớ khi chạy đo điểm chuẩn từ lần này sang lần khác (b/140895105)

Sửa lỗi

  • Thêm phần phụ thuộc androidx.annotation:android-experimental-lint để mã Java sẽ tìm ra các mã lỗi một cách chính xác khi API thử nghiệm không được sử dụng (tương tự như việc mà chú thích thử nghiệm Kotlin thực hiện cho các phương thức gọi Kotlin).
  • Phát hiện chính xác việc sử dụng đối số đo lường additionalTestOutputDir cho đầu ra trong Trình bổ trợ Android cho Gradle 3.6, để biết khi nào AGP sẽ xử lý bản sao dữ liệu.
  • Sửa lỗi không phát hiện tần số xung nhịp trong JSON để in -1 đúng cách (b/141945670).

Phiên bản 1.0.0-alpha06

Ngày 18 tháng 9 năm 2019

Phát hành androidx.benchmark:benchmark-common:1.0.0-alpha06, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha06androidx.benchmark:benchmark-junit4:1.0.0-alpha06. Phiên bản 1.0.0-alpha06 bao gồm các thay đổi sau.

Tính năng mới

  • Thêm tính năng kiểm tra việc sử dụng gói cũ một cách không chính xác cho trình chạy kiểm thử (test runner) và cung cấp thông báo lỗi hữu ích hơn

Thay đổi về API

  • Chú thích thử nghiệm ExperimentalAnnotationReport hiện được công khai đúng cách. Hiện tại, API thử nghiệm BenchmarkState#report yêu cầu sử dụng chú thích này

Phiên bản 1.0.0-alpha05

Ngày 5 tháng 9 năm 2019

Phát hành androidx.benchmark:benchmark-common:1.0.0-alpha05, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha05androidx.benchmark:benchmark-junit4:1.0.0-alpha05. Bạn có thể xem các thay đổi trong phiên bản này tại đây.

Thay đổi về API

  • API BenchmarkState.reportData hiện được đánh dấu là thử nghiệm

Sửa lỗi

  • Sửa lỗi tập lệnh khoá xung nhịp không hoạt động trên các thiết bị thiếu tiện ích môi trường shell cut hoặc expr.
  • Sửa lỗi tác vụ ./gradlew lockClocks bị treo trên các thiết bị đã bị can thiệp vào hệ thống bằng một phiên bản cũ của tiện ích su không hỗ trợ cờ -c.

Phiên bản 1.0.0-alpha04

Ngày 7 tháng 8 năm 2019

Phát hành androidx.benchmark:benchmark-common:1.0.0-alpha04, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha04androidx.benchmark:benchmark-junit4:1.0.0-alpha04. Bạn có thể xem các thay đổi trong phiên bản này tại đây.

Thêm một tài liệu mới về cách sử dụng Thư viện Đo điểm chuẩn (Benchmark) mà không cần Gradle, cả khi dùng với các hệ thống xây dựng khác nhau (chẳng hạn như Bazel hoặc Buck) lẫn khi chạy trong CI. Để biết thêm thông tin, hãy xem phần Xây dựng phép đo điểm chuẩn mà không cần GradleTiến hành đo điểm chuẩn trong tính năng Tích hợp liên tục.

Tính năng mới

  • Trình bổ trợ Gradle
    • Tự động tắt mức độ phù hợp của hoạt động kiểm thử và đặt AndroidBenchmarkRunner theo mặc định (b/138374050)
    • Thêm tính năng hỗ trợ dành cho bản sao dữ liệu mới dựa trên AGP, khi tiến hành đo điểm chuẩn và khi sử dụng AGP 3.6 trở lên
  • Các phần bổ sung định dạng JSON
    • Xuất ra tổng thời gian chạy kiểm thử đo điểm chuẩn (b/133147694)
    • Các lần đo điểm chuẩn @Parameterized sử dụng chuỗi tên (ví dụ: @Parameters(name = "size={0},depth={1}")) hiện trả kết quả là tên và giá trị của các tham số trong mỗi lần đo điểm chuẩn trong đầu ra JSON (b/132578772)
  • Chế độ chạy thử nghiệm (Dry Run) (b/138785848)
    • Thêm chế độ "chạy thử nghiệm" ("dry run") để chỉ chạy mỗi vòng lặp đo điểm chuẩn một lần nhằm kiểm tra lỗi/sự cố mà không thu thập số liệu đo lường. Điều này có thể hữu ích, chẳng hạn như: chạy nhanh các quá trình đo điểm chuẩn trong phần gửi trước (presubmit) để đảm bảo không có sự cố.

Thay đổi về API

  • Cấu trúc mô-đun đã thay đổi, tách thư viện (b/138451391)
    • benchmark:benchmark-junit4 chứa các lớp có phần phụ thuộc JUnit: AndroidBenchmarkRunnerBenchmarkRule, cả hai đều đã được chuyển vào gói androidx.benchmark.junit4
    • benchmark:benchmark-common chứa phần còn lại của logic, bao gồm cả API BenchmarkState
    • Việc phân tách này sẽ cho phép thư viện hỗ trợ tính năng đo điểm chuẩn mà không dùng đến các API JUnit4 trong tương lai
  • Các cảnh báo cấu hình hiện được xem là lỗi và sẽ gây sự cố trong quá trình kiểm thử (b/137653596)
    • Chúng tôi thực hiện điều này để khuyến khích người dùng đo lường chính xác hơn nữa, đặc biệt là trong CI
    • Những lỗi này có thể được giảm mức độ trở lại thành cảnh báo bằng một đối số đo lường. Ví dụ: -e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"

Sửa lỗi

  • Các lỗi khi ghi vào bộ nhớ ngoài trên thiết bị Q cung cấp thông tin mô tả chi tiết hơn, cùng các đề xuất về cách giải quyết sự cố
  • Màn hình được tự động bật khi tiến hành đo điểm chuẩn, thay vì tắt khiến không thực hiện được quá trình

Đóng góp bên ngoài

  • Cảm ơn Sergey Zakharov vì đã đóng góp các giải pháp cải tiến đầu ra JSON và khắc phục sự cố tắt màn hình!

Phiên bản 1.0.0-alpha03

Ngày 2 tháng 7 năm 2019

Phát hành androidx.benchmark:benchmark:1.0.0-alpha03androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03. Bạn có thể xem các thay đổi trong phiên bản này tại đây.

Tính năng mới

  • Hiển thị thời lượng ngủ do điểm tiết lưu nhiệt trên mỗi quá trình đo điểm chuẩn trong báo cáo JSON đầy đủ

Sửa lỗi

  • Bạn không còn cần phải áp dụng trình bổ trợ Gradle sau các trình bổ trợ của Android và khối Android
  • Thêm tính năng hỗ trợ báo cáo đo điểm chuẩn trên các thiết bị Android 10 sử dụng dung lượng lưu trữ có giới hạn

Phiên bản 1.0.0-alpha02

Ngày 6 tháng 6 năm 2019

Phát hành androidx.benchmark:1.0.0-alpha02androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02. Xem các thay đổi trong phiên bản này tại đây.

Lưu ý rằng chúng tôi đang xem giản đồ JSON là API. Chúng tôi dự định tuân thủ các giới hạn về độ ổn định giống như các API khác: ổn định (rất hiếm khi có ngoại lệ) khi ở bản beta và được khắc phục trong bản phát hành cuối cùng, chỉ bổ sung trong các bản phát hành nhỏ và thay đổi/loại bỏ trong các bản phát hành lớn.

Thay đổi về API

  • Giản đồ JSON được đại tu. Các thay đổi tiếp theo đối với giản đồ JSON có thể bị giới hạn ở các phần bổ sung:

    • Đã sắp xếp lại cấu trúc đối tượng kết quả để hỗ trợ các nhóm chỉ số bổ sung trong tương lai (b/132713021)
    • Thêm thông tin về bối cảnh chạy chương trình kiểm thử (chẳng hạn như thông tin về thiết bị và bản dựng cũng như thông tin về việc khoá xung nhịp) vào đối tượng cấp cao nhất (b/132711920)
    • Tên của các chỉ số thời gian hiện có cụm từ "ns" (b/132714527)
    • Thêm các số liệu thống kê bổ sung vào mỗi chỉ số được báo cáo (tối đa, trung bình, tối thiểu) và đã xoá các số liệu thống kê "nano" đơn giản (b/132713851)
  • Xoá đầu ra XML (b/132714414)

  • Xoá tính năng phát hiện điểm điều tiết nhiệt khỏi API BenchmarkState.reportData (b/132887006)

Sửa lỗi

  • Khắc phục lỗi ./gradlew lockClocks không cố định trên một số thiết bị chạy hệ điều hành mới nhất (b/133424037)
  • Tắt tính năng phát hiện điểm tiết lưu nhiệt của trình mô phỏng (b/132880807)

Phiên bản 1.0.0-alpha01

Ngày 7 tháng 5 năm 2019

Phát hành androidx.benchmark:benchmark:1.0.0-alpha01. Bạn có thể xem các thay đổi trong phiên bản này tại đây.