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 22 tháng 2 năm 2023 1.1.1 - - 1.2.0-alpha10

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. Đọc nội dung Kho lưu trữ Maven của Google để biết thêm thông tin.

Thêm các phần phụ thuộc cho cấu phần phần mềm bạn cần trong tệp build.gradle cho ứng dụng hoặc mô-đun của mình:

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 ứng dụng hoặc mô-đun:

Groovy

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

Kotlin

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

Microbenchmark

Groovy

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

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

Kotlin

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

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.1.1' apply false
}

Kotlin

plugins {
  id("androidx.benchmark") version "1.1.1" 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

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.2

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.

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 để liệt kê rõ 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.

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.

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.

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.

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.

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.

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

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.