Benchmark

Đ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 15 tháng 6 năm 2022 1.1.0 - - -

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 phần phụ thuộc cho cấu phần mềm bạn cần trong tệp build.gradle cho ứng dụng hoặc mô-đun:

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.0"
}

Kotlin

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

Microbenchmark

Groovy

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

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

Kotlin

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

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

Kotlin

plugins {
  id("androidx.benchmark") version "1.1.0" 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 Công cụ theo dõi lỗi để biết thêm thông tin.

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)

  • Xóa độ 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 hóa 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 thử nghiệm 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

  • Xoá 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ụngStartupMode.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 tiết lưu 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

  • Khắc phục 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+). 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ặcandroidx.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ự cân bằng, 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à sự lặp lại của gói (mặc dù sự lặp lại 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ị mỗi lần lặp lại để đảm bảo giao diện người dùng có thể được kiểm tra – 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 lần lặp lại. Nếu sự thay đổi này dẫn đến việc thiếu các chỉ số, xin 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 (critical user journey) 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 mỗi lần 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 những 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ố lần lặp lại 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. Điều 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 tiết lưu 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 tiết lưu (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 Ui 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 sánh 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 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/hoạt ảnh 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 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 sử 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” (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 (đối 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.
  • Khắc phục sự cố 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 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 đo điểm chuẩn mà không cần GradleChạy đ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 thử nghiệm 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 chạy đ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" để 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 chạy các quá trình đo điểm chuẩn, thay vì tắt khiến quá trình bị thất bại

Đó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 quy tắc ràng buộc về độ ổn định giống như các API khác: ổn định (rất hiếm 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 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 tiết lưu 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. Các thay đổi đã được xác nhận trong phiên bản này có sẵn tại đây.