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 11 tháng 12 năm 2024 1.3.3 - - 1.4.0-alpha06

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

Kotlin

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

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 microbenchmark:

Groovy

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

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

Kotlin

dependencies {
    androidTestImplementation("androidx.benchmark:benchmark-junit4:1.3.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.3.0' apply false
}

Kotlin

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

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

Phiên bản 1.4.0-alpha06

Ngày 11 tháng 12 năm 2024

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

Thay đổi về API

  • Xoá việc sử dụng @Language("sql") trong PerfettoTraceProcessor.Session.query(), vì tính năng làm nổi bật/phân tích cú pháp của Studio bị hỏng. (Idc2fa, b/377733398)

Sửa lỗi

  • Thư viện này hiện sử dụng chú giải về tính chất rỗng của JSpecify, là loại sử dụng. Nhà phát triển Kotlin nên sử dụng các đối số trình biên dịch sau để thực thi cách sử dụng chính xác: -Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode (I46810, b/326456246)
  • Sửa ArtMetric để báo cáo tải lớp (không phải khởi tạo) và cải thiện tài liệu để làm rõ hành vi trong thời gian chạy. (I9915c)
  • Trên Android Nhiều người dùng, chỉ thực thi các lệnh dưới quyền root trên thiết bị đã bị can thiệp hệ thống. (I88b44)

Phiên bản 1.4.0-alpha05

Ngày 13 tháng 11 năm 2024

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

Sửa lỗi

  • Khắc phục vấn đề trên API 34 trở lên, trong đó CompilationMode.None() có hiệu suất không nhất quán không thể hiện hiệu suất ban đầu, trường hợp xấu nhất. Điều này hoạt động xung quanh một thay đổi về nền tảng cho phép trạng thái biên dịch của ART verify biên dịch một phần ứng dụng (chỉ ảnh hưởng đến việc tải lớp) ngay sau lần khởi chạy đầu tiên. (Ie48d0)
  • Khắc phục vấn đề có thể thu thập dấu vết (đặc biệt là dấu vết ngắn) không báo cáo kết quả đo lường từ Chỉ số macrobenchmark tích hợp, do tên quy trình bị cắt bớt trong dấu vết Perfetto. Giờ đây, macrobenchmark sẽ giải quyết vấn đề này bằng cách tìm tên gói bị cắt bớt trong tất cả các truy vấn tích hợp sẵn, ngoài tên gói dự kiến. Xin lưu ý rằng các phương thức triển khai TraceMetric tuỳ chỉnh hoặc các phương thức gọi trực tiếp khác của PerfettoSession.query có thể triển khai hành vi tương tự bằng cách thay đổi process.name LIKE "$packageName" trong truy vấn Perfetto thành (process.name LIKE "$packageName" OR process.name LIKE "$(packageName.takeLast(15))"). (I5bf01, b/377565760)

Phiên bản 1.4.0-alpha04

Ngày 30 tháng 10 năm 2024

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

Tính năng mới

  • (Thử nghiệm) Bật tính năng tạo Hồ sơ cơ sở và đo điểm chuẩn trên các ứng dụng được cài đặt cho người dùng phụ, ví dụ: mọi ứng dụng trên thiết bị Android Auto không có giao diện người dùng. Chúng tôi đã thử nghiệm tính năng hỗ trợ này trong một số trường hợp, nhưng hãy cho chúng tôi biết nếu bạn gặp lỗi khi sử dụng tính năng này. (I9fcbe, b/356684617, b/373641155)

Sửa lỗi

  • isProfileable hiện luôn bị ghi đè trong các bản dựng điểm chuẩn và isDebuggable cũng luôn bị ghi đè trong cả bản dựng điểm chuẩn và nonMinified (thu thập hồ sơ cơ sở). (I487fa, b/369213505)
  • Khắc phục lỗi phát hiện quá trình biên dịch trên một số thiết bị thực tế trước API 28 – ảnh hưởng đến json context.compilationMode, cũng như hành vi của androidx.benchmark.requireAot=true (không còn gửi nhầm) (Ic3e08, b/374362482)
  • Trong các chỉ số CpuEventCounter, hãy gửi nếu bạn quan sát thấy các phép đo không hợp lệ (ví dụ: instructions/cpucycles==0) (I8c503)

Phiên bản 1.4.0-alpha03

Ngày 16 tháng 10 năm 2024

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

Thay đổi về API

  • Macrobenchmark: Thêm ArtMetric, có thể dùng để kiểm tra mức độ sử dụng hồ sơ hoặc hiệu suất chung của Android RunTime. Ghi lại số lượng và tổng thời lượng của JIT, khởi tạo lớp (nếu có) và xác minh lớp. Ngoài ra, hãy thay đổi CaptureInfo để bao gồm phiên bản chính ART không bắt buộc với mặc định. (I930f7)
  • Thêm coefficientOfVariation vào đầu ra JSON của Điểm chuẩn để cho thấy độ ổn định trong một lần chạy điểm chuẩn nhất định. (Ib14ea)

Sửa lỗi

  • Khắc phục CollectBaselineProfileTask khi thiết bị AVD có khoảng trắng. (Ia0225, b/371642809)
  • Sửa lỗi dự đoán cho các lỗi từ ngoại lệ StartupMode.COLD: Package <packagename> must not be running prior to cold start!. Bây giờ, MacrobenchmarkScope.killProcess() (bao gồm cả lần chạy trước mỗi lần lặp lại, dùng để triển khai hành vi StartupMode.COLD) sẽ chờ xác minh rằng tất cả các quy trình của ứng dụng đều đã ngừng chạy. (I60aa6, b/351582215)
  • Khắc phục vấn đề lỗi UNLOCKED_ xuất hiện trên một số trình mô phỏng đã bị can thiệp vào hệ thống. (Ic5117)
  • Thư viện này hiện sử dụng chú giải về tính chất rỗng của JSpecify, là loại sử dụng. Nhà phát triển Kotlin nên sử dụng các đối số trình biên dịch sau để thực thi cách sử dụng chính xác: -Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode (I7104f, b/326456246)

Phiên bản 1.4.0-alpha02

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

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

Thay đổi về API

  • Di chuyển các tác vụ Gradle lockClocksunlockClocks sang các dự án đo điểm chuẩn, thay vì ở cấp cao nhất. Thay đổi này là cần thiết vì rất tiếc là không có cách nào để đăng ký các hành động này làm hành động cấp cao nhất mà không làm gián đoạn tính năng tách biệt dự án. (I02b8f, b/363325823)

Sửa lỗi

  • BaselineProfileRule hiện thu thập hồ sơ cho các ứng dụng đa quy trình bằng cách báo hiệu cho mỗi quy trình đang chạy ở cuối khối để kết xuất hồ sơ. Nếu quá trình biên dịch dựa trên hồ sơ không bao giờ tìm thấy một quy trình để truyền tin, thì quá trình biên dịch sẽ không thành công vì không có dữ liệu hồ sơ trong đó. Ngoài ra, thêm một đối số đo lường để kiểm soát thời lượng chờ tệp báo lỗi: androidx.benchmark.saveProfileWaitMillis (I0f519, b/366231469)
  • Từ điểm chuẩn 1.3.2: Khắc phục lỗi Phòng thử nghiệm Firebase (FTL) không thể lấy tệp kết quả Macrobenchmark hoặc Hồ sơ cơ sở từ Trình bổ trợ Gradle cho Hồ sơ cơ sở. (I2f678, b/285187547)

Để sử dụng FTL, hãy áp dụng trình bổ trợ cho mô-đun hồ sơ cơ sở trong khối trình bổ trợ, với:

  plugins {
      ...
      id("com.google.firebase.testlab")
  }

rồi định cấu hình phòng thử nghiệm Firebase bằng:

  firebaseTestLab {

      // Credentials for FTL service
      serviceAccountCredentials.set(file("credentials.json"))

      // Creates one or more managed devices to run the tests on.
      managedDevices {
          "ftlDeviceShiba34" {
              device = "shiba"
              apiLevel = 34
          }
      }

      // Ensures the baseline profile is pulled from the device.
      // Note that this will be automated as well later with aosp/3272935.
      testOptions {
          results {
              directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
          }
      }
  }

Ngoài ra, bạn cần thêm thiết bị FTL đã tạo vào phần mở rộng hồ sơ cơ sở:

  baselineProfile {
      managedDevices += "ftlDeviceShiba34"
      useConnectedDevices = false
  }

Phiên bản 1.4.0-alpha01

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

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

Tính năng mới – Thông tin chi tiết về quá trình khởi động ứng dụng

  • Bạn có thể bật phiên bản ban đầu của thông tin chi tiết về quá trình khởi động ứng dụng trong Macrobenchmark. (09fae38)

Cách bật trong phép đo điểm chuẩn khởi động:

  @Test
  fun startup {
      macrobenchmarkRule.measureRepeated(
          
          packageName = "com.example.my.application.id"
          metrics = listOf(StartupTimingMetric()),
          iterations = 5,
          startupMode = StartupMode.COLD,
          compilationMode = CompilationMode.None(),
          experimentalConfig = ExperimentalConfig(startupInsightsConfig = StartupInsightsConfig(isEnabled = true))
          ) {
          scope.startActivityAndWait(...)
      }
  }

Sau đó, việc chạy phép đo điểm chuẩn khởi động sẽ phân tích dấu vết để tìm các vấn đề thường gặp và in các vấn đề đó sau khi các chỉ số được xuất ra trong kết quả kiểm thử của Studio trong thẻ điểm chuẩn, ví dụ:

StartupBenchmark_startup[startup=COLD,compilationMode=None]
├── Metrics
│   ├──   timeToFullDisplayMs                min  1,147.2,   median  1,208.8,   max  1,307.4
│   └──   timeToInitialDisplayMs             min  1,147.2,   median  1,208.8,   max  1,307.4
├── App Startup Insights
│   ├── App in debuggable mode (expected: false)
│   │   └── seen in iterations: 0(true) 1(true) 2(true) 3(true) 4(true) 5(true) 6(true) 7(true) 8(true) 9(true)
│   ├── Potential CPU contention with another process (expected: < 100000000ns)
│   │   └── seen in iterations: 4(105022546ns)
│   └── Main Thread - Binder transactions blocked (expected: false)
│       └── seen in iterations: 7(true)
└── Traces
    └── Iteration 0 1 2 3 4 5 6 7 8 9

Tính năng này vẫn đang trong quá trình hoàn thiện, với các điểm cải tiến về tài liệu và khả năng mở rộng, nhưng chúng tôi rất mong nhận được ý kiến phản hồi của bạn.

Tính năng mới

  • Thêm thuộc tính gradle androidx.baselineprofile.suppressWarnings để ngăn chặn tất cả cảnh báo về hồ sơ cơ sở. (314153a)
  • Các chỉ số Microbench hiện hiển thị trong dấu vết Perfetto dưới dạng bộ đếm. (3214854)
  • Thêm tập lệnh thử nghiệm để tắt jit (yêu cầu khởi động lại thư mục gốc / thời gian chạy) và đặt lại hiệu suất/trạng thái kiểm thử của thiết bị. Các tệp này hiện không được phát hành dưới dạng tác vụ gradle. (7c3732b)
  • Thêm đối số điểm chuẩn để bỏ qua các bài kiểm thử khi chạy trên trình mô phỏng. Khi bạn bật bản dựng automaticGenerationDuring, các điểm chuẩn cũng sẽ kích hoạt quá trình tạo hồ sơ cơ sở. Thao tác này sẽ không thành công nếu bạn sử dụng trình mô phỏng. Với đối số mới skipBenchmarksOnEmulator, chúng ta có thể bỏ qua kiểm thử. (0c2ddcd)
  • Thay đổi logic bật sự kiện hiệu suất để chạy trên API 23 trở lên (2550048)

Thay đổi về API

  • Đối số PerfettoConfig thử nghiệm hiện có cho MacrobenchmarkRule.measureRepeated() đã được chuyển sang đối tượng ExperimentalConfig mới.

Sửa lỗi

  • Tăng số lần thử lại lockClocks.sh (99e9dac)
  • Đừng tạo nonMinified và các loại bản dựng chuẩn nếu có. Do một lỗi, ngay cả khi nonMinified và các loại bản dựng chuẩn tồn tại, chúng vẫn sẽ được tạo lại. (e75f0a5)
  • Bỏ qua các lát cắt không kết thúc từ kết quả TraceSectionMetric. (a927d20)
  • Cải thiện tính năng kiểm tra trình mô phỏng để xem xét tiền tố sdk_. (1587de8)
  • Xem các gói không chạy là đã xoá trong FrameTimingGfxInfoMetric. (35cc79c)
  • Khắc phục androidx.benchmark.cpuEventCounter tạo ra các giá trị bị hỏng cho các sự kiện không phải là sự kiện Hướng dẫn. (06edd59)
  • Sửa resumeTiming/runWithTimingDisabled để tuân theo thứ tự mức độ ưu tiên của chỉ số và giảm đáng kể tác động của việc tạm dừng/tiếp tục chỉ số có mức độ ưu tiên thấp hơn đối với kết quả của chỉ số có mức độ ưu tiên cao hơn. Ví dụ: nếu sử dụng bộ đếm hiệu suất cpu thông qua đối số đo lường cpuEventCounter.enable, timeNs sẽ không còn giảm đáng kể khi tạm dừng/tiếp tục. (5de0968)

Phiên bản 1.3

Phiên bản 1.3.3

Ngày 16 tháng 10 năm 2024

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

Sửa lỗi

  • Khắc phục CollectBaselineProfileTask khi thiết bị AVD có khoảng trắng (Ia0225, b/371642809)

Phiên bản 1.3.2

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

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

Sửa lỗi

  • Khắc phục lỗi Phòng thử nghiệm Firebase (FTL) không thể lấy tệp kết quả của Hồ sơ cơ sở hoặc Macrobenchmark từ Trình bổ trợ Gradle cho Hồ sơ cơ sở. (I2f678, b/285187547)

Để sử dụng FTL, hãy áp dụng trình bổ trợ cho mô-đun hồ sơ cơ sở trong khối trình bổ trợ, với:

  plugins {
      ...
      id("com.google.firebase.testlab")
  }

rồi định cấu hình phòng thử nghiệm Firebase bằng:

  firebaseTestLab {

      // Credentials for FTL service
      serviceAccountCredentials.set(file("credentials.json"))

      // Creates one or more managed devices to run the tests on.
      managedDevices {
          "ftlDeviceShiba34" {
              device = "shiba"
              apiLevel = 34
          }
      }

      // Ensures the baseline profile is pulled from the device.
      // Note that this will be automated as well later with aosp/3272935.
      testOptions {
          results {
              directoriesToPull.addAll("/storage/emulated/0/Android/media/${android.namespace}")
          }
      }
  }

Ngoài ra, bạn cần thêm thiết bị FTL đã tạo vào phần mở rộng hồ sơ cơ sở:

  baselineProfile {
      managedDevices += "ftlDeviceShiba34"
      useConnectedDevices = false
  }

Phiên bản 1.3.1

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

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

Sửa lỗi

  • Thêm thuộc tính gradle androidx.baselineprofile.suppressWarnings để ngăn chặn tất cả cảnh báo hồ sơ cơ sở (I7c36e, b/349646646)
  • Sửa trình bổ trợ Gradle cho Hồ sơ cơ sở để sử dụng nonMinified…benchmark… hiện có nếu ứng dụng tạo ra thay vì tạo trình bao bọc. (Ia8934, b/361370179)
  • Khắc phục java.lang.AssertionError: ERRORS (not suppressed): EMULATOR khi bật automaticGenerationDuringBuild trên trình mô phỏng. Đối số mới được dùng để bỏ qua kiểm thử. (If3f51, b/355515798)
  • Rút gọn Microbenchmark – giữ các lớp con của org.junit.runner.notification.RunListener trong thư viện điểm chuẩn proguard (Ic8ed5, b/354264743)
  • Sửa TraceSectionMetric để Bỏ qua các lát cắt không kết thúc. Trước đây, các giá trị này được coi là có thời lượng -1, ví dụ: trong quá trình cộng hoặc tìm thời lượng tối thiểu. (If74b7)
  • Khắc phục vấn đề trong FrameTimingGfxInfoMetric, trong đó việc bắt đầu chỉ số sẽ gặp sự cố nếu quy trình chưa chạy. (I6e412)

Phiên bản 1.3.0

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

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

Thay đổi về Microbenchmark kể từ phiên bản 1.2.0

  • Theo dõi phương thức được bật theo mặc định trong phép đo điểm chuẩn vi mô khi chạy trên hầu hết các thiết bị
    • Tính năng theo dõi phương thức chạy dưới dạng một giai đoạn riêng biệt, sau khi đo lường – điều này cho phép cả kết quả đo lường và dấu vết phương thức đều được xuất ra từ một lần chạy điểm chuẩn
    • Tính năng theo dõi phương thức trên một số phiên bản Android OS và ART sẽ ảnh hưởng đến các giai đoạn đo lường sau này – trên các phiên bản này, tính năng theo dõi phương thức sẽ tắt theo mặc định và một cảnh báo sẽ được in ra kết quả của Studio
  • Điểm chuẩn luồng chính và lỗi ANR
    • Thêm measureRepeatedOnMainThread cho điểm chuẩn luồng giao diện người dùng (ví dụ: những điểm tương tác với giao diện người dùng Compose/View) để tránh lỗi ANR khi chạy trong nhiều giây.
    • Dấu vết phương thức sẽ bị bỏ qua nếu dự kiến sẽ vượt quá thời hạn tránh lỗi ANR. Đặt androidx.benchmark.profiling.skipWhenDurationRisksAnr thành false để tắt hành vi này (không nên chạy CI, vì lỗi ANR có thể gây ra sự cố trong các lần chạy CI dài).
  • Giảm thiểu
    • Nhúng các quy tắc proguard để cải thiện khả năng đo điểm chuẩn vi mô khi bật tính năng rút gọn
    • Tính năng rút gọn/R8 trong mô-đun thư viện yêu cầu AGP 8.3 và có thể được bật thông qua android.buildTypes.release.androidTest.enableMinification trong build.gradle
    • Thêm API BlackHole.consume() thử nghiệm để ngăn việc loại bỏ mã chết (If6812, b/286091643)
  • Chỉ số
    • Tính năng bộ đếm sự kiện CPU thử nghiệm (các chỉ số từ perf_event_open, yêu cầu quyền truy cập thư mục gốc trên hầu hết các phiên bản nền tảng), truy cập thông qua InstrumentationArgument androidx.benchmark.cpuEventCounter.enable (có thể được đặt thành true) và androidx.benchmark.cpuEventCounter.events có thể được đặt ví dụ: thành (Instructions,CpuCycles). Tính năng này sẽ được hỗ trợ trên một số trình mô phỏng userdebug, nhưng tính năng hỗ trợ chưa được kiểm thử trên tất cả trình mô phỏng hiện có

Các thay đổi về MACRObenchmark kể từ phiên bản 1.2.0

  • Cải tiến tính năng theo dõi phương thức cho macrobenchmark.
    • Giờ đây, dấu vết phương thức được giới hạn trong thời lượng của measureBlock và có thể ghi lại nhiều phiên nếu quá trình bắt đầu nhiều lần.
    • Trước đây, tính năng theo dõi phương thức chỉ hoạt động đối với các điểm chuẩn StartupMode.COLD và không ghi lại gì đối với measureBlocks không khởi động lại quy trình mục tiêu
    • Khắc phục lỗi xoá sạch dấu vết phương thức trong macrobenchmark để các 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)
  • Thải chính xác hồ sơ ART trong các lần lặp lại warmUp riêng lẻ khi quá trình bị huỷ để các phép đo CompilationMode.Partial(warmup=N) chính xác hơn. (I17923)
  • Thông báo lỗi truyền phát chương trình đổ bóng
    • Thêm đề xuất gỡ lỗi để bỏ thông báo lỗi truyền chương trình đổ bóng
    • Thêm hai đối số đo lường để ghi đè hành vi thả 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ể dùng để bỏ qua tất cả các lần thả chương trình đổ bóng (bao gồm cả lần thả trong lần chạy StartupMode.Cold), đặc biệt là khi đo điểm chuẩn các ứ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 các lỗi khi cố gắng thả chương trình đổ bóng, ví dụ: khi đo điểm chuẩn ứng dụng không có trình cài đặt hồ sơ 1.3 (I4f573)
  • Thêm biến thể MacrobenchmarkRule#measureRepeated thử nghiệm, lấy 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ác cấu hình được định cấu hình không chính xác có thể khiến các lớp Metric tích hợp không hoạt động. (Idfd3d, b/309841164, b/304038384)
  • Huỷ các công việc dexopt ở chế độ nền trước khi chạy Macrobenchmark để giảm sự can thiệp. (I989ed)
  • Macrobenchmark hiện chờ 1 giây để ứng dụng mục tiêu xả một hồ sơ ART (trước đây là 500 mili giây). (I85a50, b/316082056)
  • Cải tiến TraceSectionMetric
    • Lưu ý: Các thay đổi về TraceSectionMetric dưới đây có thể ảnh hưởng đến kết quả khi sử dụng CI, đồng thời có thể tạo ra sự gián đoạn hoặc phá vỡ quá trình phân tích cú pháp
    • Tổng hiện là giá trị mặc định, vì hầu hết các trường hợp sử dụng chỉ số này là cho các sự kiện lặp lại và trước tiên sẽ loại bỏ dữ liệu trong những trường hợp này
    • Thay đổi để có thể tuỳ chỉnh nhiều hơn, với nhiều chế độ hơn
    • Tên chế độ hiện được nhúng trong tên đầu ra của chỉ số (trong Studio và JSON)
    • Hiện hỗ trợ các lát cắt được tạo bằng Trace.{begin|end}AsyncSection.
  • Chỉ số
    • Nguồn – Thêm PowerMetric.deviceSupportsHighPrecisionTracking, PowerMetric.deviceBatteryHasMinimumCharge()PowerMetric.deviceSupportsPowerEnergy()
    • Đổi tên Metric.getResult thành getMeasurements để khớp với loại dữ liệu trả về
    • Thêm nhãn log.w / ngoại lệ vào tất cả lỗi phát hiện khởi động. Điều này không làm thay đổi hành vi hiện tại (vì vậy, một số lỗi sẽ xảy ra và một số lỗi khác sẽ không phát hiện được quá trình khởi động), chỉ giúp bạn dễ hiểu hơn. Nhìn chung, những sự kiện mà Log.w() và không báo cáo được chỉ số khởi động là những sự kiện bị thiếu sự kiện không phải khung, 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 (từ các lát cắt giao diện người dùng/RT). (Id240f, b/329145809)
    • Thêm thông tin đo lường frameCount vào FrameTimingMetric để hỗ trợ phát hiện các tình huống mà thông tin đo lường thay đổi do số lượng khung hình được tạo thay đổi (thêm ảnh động mới, khắc phục vấn đề vô hiệu hoá). (I1e5aa)
    • Làm rõ rằng frameOverrunMs là chỉ số ưu tiên để theo dõi khi có trong tài liệu và lý do tại sao. (I18749, b/329478323)
    • Khắc phục vấn đề trong đó các khung chưa kết thúc ở đầu và cuối dấu vết có thể được ghép nối với nhau, điều này sẽ báo cáo không chính xác dưới dạng một khung cực dài. (I39353, b/322232828)
    • Cải thiện lỗi FrameTimingMetric khi không tạo khung và luôn xuất đường liên kết để theo dõi khi không phân tích cú pháp được 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ú pháp được mã nhận dạng khung hình, đặc biệt là trên một số thiết bị OEM. (Ia24bc, b/303823815, b/306235276)
    • Giảm độ nghiêm ngặt của các bước kiểm tra trong FrameMetrics và thêm thông tin chi tiết vào thông báo lỗi. (Iadede)

Các thay đổi về tính năng chụp Hồ sơ cơ sở / trình bổ trợ Gradle kể từ phiên bản 1.2.0

  • Tăng phiên bản AGP được đề xuất tối đa lên 9.0.0-alpha01.
  • Đảm bảo các tác vụ mergeArtProfilemergeStartupProfile luôn chờ tạo hồ sơ cơ sở. (I623d6, b/343086054)
  • Việc tạo thành công hồ sơ cơ sở sẽ xuất ra bản tóm tắt về những thay đổi (I824c8, b/269484510)
  • Thêm DSL để tắt cảnh báo (Ic4deb, b/331237001)
  • Khắc phục để đảm bảo điểm chuẩn sử dụng hồ sơ cơ sở đã tạo khi automaticGenerationDuringBuild tắt (Ic144f, b/333024280)
  • Khắc phục 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 để đư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ơ cơ sở và hồ sơ khởi động ở cuối tác vụ tạo. (I802e5, b/313976958)

Các thay đổi đáng kể khác kể từ phiên bản 1.2.0

  • Ghi lại dấu vết
    • Giảm lỗi EXITCODE 2 khi khởi động perfetto từ lỗi thành cảnh báo đã ghi
    • Bật tính năng theo dõi AIDL theo mặc định trong phép đo điểm chuẩn(yêu cầu API 28) (Ia0af2, b/341852305)
    • Bật tính năng theo dõi thẻ porter theo mặc định trong phép đo điểm chuẩn. Ví dụ: tính năng này sẽ ghi lại các điểm theo dõi khoá chế độ thức. (Icfe44, b/286551983)
    • Tăng thời gian chờ bắt đầu ghi lại dấu vết để tránh sự cố khi bắt đầu theo dõi trên các thiết bị chậm hơn (I98841, b/329145808)
    • Thêm API công khai PerfettoTraceProcessor.Session.queryMetrics API với các biến thể JSON, textproto và tệp nhị phân proto (chưa giải mã). Các API này cho phép bạn truy vấn các chỉ số được tích hợp vào TraceProcessor (I54d7f, b/304038382)
    • Bật tính năng chặn bắt đầu trên bản ghi dấu vết Perfetto để giảm nguy cơ thiếu dữ liệu ở đầu dấu vết. Chỉ được hỗ trợ trên API 33 trở lên. (Ie6e41, b/310760059)
  • Kết quả JSON
    • Thêm thông tin bổ sung trong ngữ cảnh điểm chuẩn trong đầu ra JSON:
      • context.artMainlineVersion – phiên bản số nguyên của mô-đun chính Art (nếu có trên thiết bị, nếu không thì là -1)
      • context.build.id – Bằng android.os.Build.ID
      • context.build.version.codename – Bằng android.os.Build.VERSION.CODENAME
      • context.build.version.abbreviatedCodename – tương ứng với chữ cái đầu tiên của tên mã trước khi phát hành (bao gồm cả các bản phát hành) (Ie5020)
    • Thêm danh sách profilerOutput vào đầu ra JSON để dễ dàng hơn trong việc tạo công cụ xung quanh 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 cảnh báo khi sử dụng Android Test Orchestrator trong các mô-đun điểm chuẩn, vì điều này sẽ khiến các tệp JSON đầu ra của mỗi mô-đun bị ghi đè nhiều lần. (Ia1af6, b/286899049)
    • 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ý sau tệp. (I4a5ab)

Phiên bản 1.3.0-rc01

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

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

Sửa lỗi

  • Khắc phục androidx.benchmark.cpuEventCounter tạo ra các giá trị bị hỏng cho các sự kiện không phải là sự kiện Hướng dẫn (I7386a, b/286306579)
  • Sửa resumeTiming/runWithTimingDisabled để tuân theo thứ tự mức độ ưu tiên của chỉ số và giảm đáng kể tác động của việc tạm dừng/tiếp tục chỉ số có mức độ ưu tiên thấp hơn đối với kết quả của chỉ số có mức độ ưu tiên cao hơn. Ví dụ: nếu sử dụng bộ đếm hiệu suất cpu thông qua đối số đo lường cpuEventCounter.enable, timeNs sẽ không còn giảm đáng kể khi tạm dừng/tiếp tục. (I39c2e, b/286306579, b/307445225)
  • Giảm khả năng lấy mẫu ngăn xếp khiến measureRepeatedOnMainThread không bị hết thời gian chờ luồng chính bằng cách chuyển lượt chuyển đổi lấy mẫu ngăn xếp ra khỏi luồng chính. (I487a8, b/342237318)
  • Xoá phần trình bày quyền truy cập vào API nền tảng mới theo cách thủ công vì việc này diễn ra tự động thông qua tính năng tạo mô hình API khi sử dụng R8 với AGP 7.3 trở lên (ví dụ: R8 phiên bản 3.3) và cho tất cả các bản dựng khi sử dụng AGP 8.1 trở lên (ví dụ: D8 phiên bản 8.1). Những ứng dụng không sử dụng AGP nên cập nhật lên D8 phiên bản 8.1 trở lên. Hãy xem bài viết này để biết thêm thông tin. (I9496c, b/345472586)
  • Thêm tính năng kiểm tra phiên bản agp để gửi tên gói dưới dạng đối số instr. Trước AGP 8.4.0, bạn không thể gửi tên gói ứng dụng mục tiêu đến ứng dụng đo lường thông qua các đối số đo lường. (0c72a3f)

Phiên bản 1.3.0-beta02

Ngày 10 tháng 7 năm 2024

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

Sửa lỗi

  • Xử lý EXITCODE 2 một cách linh hoạt khi khởi động Perfetto để ghi lại cảnh báo, nhưng hãy tiếp tục.

Phiên bản 1.3.0-beta01

Ngày 12 tháng 6 năm 2024

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

Thay đổi về API

  • Đổi tên MethodTracing.affectsMeasurementOnThisDevice thành AFFECTS_MEASUREMENT_ON_THIS_DEVICE để đảm bảo tính nhất quán. (I1bdfa)
  • Thêm API BlackHole.consume() thử nghiệm để ngăn chặn việc loại bỏ mã chết trong các phép đo điểm chuẩn vi mô. (If6812, b/286091643)
  • Giờ đây, Microbenchmark sẽ gửi chính xác để ngăn hoạt động theo dõi phương thức can thiệp vào các phép đo. Điều này xảy ra trên một số thiết bị nhất định khi buộc bật tính năng theo dõi phương thức (thông qua các đối số đo lường hoặc MicrobenchmarkConfig) và nếu bạn cố gắng đo lường sau khi theo dõi phương thức. Các thiết bị bị ảnh hưởng đang chạy API 26-30 hoặc một số phiên bản mô-đun chính của ART bị ảnh hưởng bởi sự can thiệp này và có thể được phát hiện trong thời gian chạy thông qua ProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice. (Iafb92, b/303660864)

Sửa lỗi

  • Đã tăng phiên bản agp tối đa được đề xuất lên 9.0.0-alpha01. (I5bbb0)
  • Thêm chế độ biên dịch vào ngữ cảnh điểm chuẩn (If5612, b/325512900)
  • Bật tính năng theo dõi AIDL theo mặc định (yêu cầu API 28) (Ia0af2, b/341852305)
  • Thêm thông tin bổ sung trong ngữ cảnh điểm chuẩn trong đầu ra JSON:
    • context.artMainlineVersion – phiên bản số nguyên của mô-đun chính Art (nếu có trên thiết bị, nếu không thì là -1)
    • context.build.id – Bằng android.os.Build.ID
    • context.build.version.codename – Bằng android.os.Build.VERSION.CODENAME
    • context.build.version.abbreviatedCodename – tương ứng với chữ cái đầu tiên của tên mã trước khi phát hành (ngay cả trên các bản phát hành) (Ie5020)
  • Sửa StackSampling để tuân thủ androidx.benchmark.profiling.sampleDurationSeconds (Ib1d53)
  • Thay đổi macro->common dependency thành api() để dễ sử dụng hơn, ví dụ: PerfettoTracePerfettoConfig. (Icdae3, b/341851833)
  • Đảm bảo các tác vụ mergeArtProfilemergeStartupProfile luôn chờ tạo hồ sơ cơ sở. (I623d6, b/343086054)
  • Hãy cân nhắc trạng thái bật biến thể khi quyết định có bật biến thể hay không. (I5d19e, b/343249144)
  • Tăng thời gian chờ bắt đầu mặc định cho trình xử lý dấu vết perfetto. (I87e8c, b/329145808)

Phiên bản 1.3.0-alpha05

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

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

Sửa lỗi

  • Gửi ngoại lệ rõ ràng hơn khi chỉ số macrobench trả về giá trị 0 cho tất cả các lần lặp (Iab58f, b/314931695)
  • Thêm các quy tắc giải pháp khác vào quy tắc proguard microbench, bao gồm cả việc hỗ trợ các quy tắc trình nghe và các cảnh báo / lỗi khác được quan sát. (I14d8f, b/329126308, b/339085669)
  • Tính năng theo dõi phương thức chạy dưới dạng một giai đoạn riêng biệt trong Macrobenchmark và không còn ảnh hưởng đến kết quả đo lường. (If9a50, b/285912360, b/336588271)
  • Thêm các đề xuất gỡ lỗi bổ sung để bỏ thông báo lỗi truyền chương trình đổ bóng. (I5efa6, b/325502725)

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.

Thay đổi về API

  • Thêm biến thể MacrobenchmarkRule#measureRepeated thử nghiệm, lấy 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ác cấu hình được định cấu hình không chính xác có thể khiến các lớp Metric tích hợp không hoạt độ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 năng lượng 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)
  • Đơn giản hoá việc ghi lại dấu vết phương thức cho Macrobenchmark trong phạm vi thời lượng của measureBlock() thực tế. Trước đây, tính năng 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ý dấu vết 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 với các biến thể JSON, textproto và tệp nhị phân proto (chưa giải mã). Các API này cho phép bạn truy vấn các chỉ số được tích hợp vào TraceProcessor (I54d7f, b/304038382)
  • Thêm profilerOutput vào đầu ra JSON để dễ dàng sử dụng công cụ xung quanh dấu vết lập hồ sơ (ví dụ: perfetto, dấu vết phương thức). (I05ddd, b/332604449)
  • Thêm thẻ nguồn vào cấu hình điểm chuẩn Perfetto. Ví dụ: tính năng này sẽ ghi lại 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 lỗi 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à lập hồ sơ. Hữu ích trong việc đánh giá hao tổn của tính năng theo dõi phương thức. (I61fb4, b/329146942)

Thay đổi về API

  • Thay đổi TraceSectionMetric.Mode thành lớp kín để cho phép mở rộng trong tương lai mà không làm hỏng các câu lệnh when đầy đủ (I71f7b)
  • Thêm TraceSectionMetric.Mode.Average.Count, đồng thời sắp xếp lại các đối số để đối số phổ biến hơn (chế độ) xuất hiện sớm hơn trong danh sách đối số, giảm nhu cầu chỉ định tên tham số. (Ibf0b0, b/315830077, b/322167531)
  • Đổi tên Metric.getResult thành getMeasurements để khớ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 tắt (Ic144f, b/333024280)
  • Khắc phục 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)
  • Khắc phục lỗi xoá sạch dấu vết phương thức trong macrobenchmark để các 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 chặn bắt đầu trên bản ghi dấu vết Perfetto để giảm nguy cơ thiếu dữ liệu ở đầu dấu vết. Chỉ được hỗ trợ trên API 33 trở lên. (Ie6e41, b/310760059)
  • Thêm cảnh báo khi sử dụng Android Test Orchestrator trong các mô-đun điểm chuẩn, vì điều này sẽ khiến các tệp JSON đầu ra của mỗi mô-đun bị ghi đè nhiều lần. (Ia1af6, b/286899049)
  • Buộc dấu thập phân "," (dấu phẩy) để phân tách hàng nghìn cho tính nhất quán trong đầu ra của Studio, bỏ qua ngôn ngữ của 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 khởi động. Điều này không làm thay đổi hành vi hiện tại (vì vậy, một số lỗi sẽ xảy ra và một số lỗi khác sẽ không phát hiện được quá trình khởi động), chỉ giúp bạn dễ hiểu hơn. Nhìn chung, những chỉ số mà Log.w() và không báo cáo được chỉ số khởi động là những chỉ số bị thiếu sự kiện không phải khung, 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 khung (từ các lát cắt 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 sự can thiệp. (I989ed)
  • Thêm thông tin đo lường frameCount vào FrameTimingMetric để hỗ trợ phát hiện các tình huống mà thông tin đo lường thay đổi do số lượng khung hình được tạo thay đổi (thêm ảnh động mới, khắc phục vấn đề vô hiệu hoá). (I1e5aa)
  • Làm rõ rằng frameOverrunMs là chỉ số ưu tiên để theo dõi khi có trong tài liệu và lý do tại sao. (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

  • Hỗ trợ thử nghiệm R8 trong microbench thông qua các quy tắc proguard được nhúng. Xin lưu ý rằng tính năng hỗ trợ này đang trong giai đoạn thử nghiệm và yêu cầu AGP 8.3 để rút gọn các bài kiểm thử mô-đun thư viện. Hãy sử dụng nội dung sau để bật tính năng rút gọn/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 hiệu suất đáng kể, 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 để nằm 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.

Thay đổi về API

  • Đổi tên các tham số boolean MicrobenchmarkConfig để tránh từ "should" (nên) không cần thiết (Ia8f00, b/303387299)
  • Thêm BenchmarkRule.measureRepeatedOnMainThread để các điểm chuẩn của luồng chính (ví dụ: các điểm 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ộ 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 đến trực tiếp từ nền tảng, thay vì được 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 các lần lặp lại warmUp riêng lẻ. (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 phần 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 trường hợp sử dụng chỉ số này là 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 phá vỡ 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 của hồ sơ cơ sở khi không có thiết bị được quản lý được chỉ định (Idea2b, b/313803289)
  • Khắc phục 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ơ cơ sở và hồ sơ khởi động ở cuối tác vụ tạo (I802e5, b/313976958)
  • Điều chỉnh thời gian chờ nguồn dữ liệu để cố gắng khắc phục java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)] (I8dc7d, b/323601788)
  • Thêm hai đối số đo lường để ghi đè hành vi thả 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ể dùng để bỏ qua tất cả các lần thả chương trình đổ bóng (bao gồm cả lần thả trong lần khởi chạy StartupMode.Cold), đặc biệt là khi đo điểm chuẩn các ứ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 các lỗi khi cố gắng thả chương trình đổ bóng, ví dụ: khi đo điểm chuẩn ứng dụng không có trình cài đặt hồ sơ 1.3 (I4f573)
  • Bỏ qua tính năng theo dõi phương thức trên luồng giao diện người dùng khi dự kiến mất nhiều 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ý sau tệp. (I4a5ab)
  • Khắc phục vấn đề trong đó các khung chưa kết thúc ở đầu và cuối dấu vết có thể được ghép nối với nhau, điều này sẽ báo cáo không chính xác dưới dạng một khung cực dài. (I39353, b/322232828)
  • 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. Việc này giúp bỏ qua các 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 để tắt các ứng dụng 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 xoá mộ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 và luôn xuất đường liên kết đến dấu vết khi không phân tích cú pháp chỉ số để hỗ trợ chẩn đoán sự cố. (I956b9)
  • Khắc phục sự cố trong FrameTimingMetric không phân tích cú pháp được mã nhận dạng khung hình, đặc biệt là trên một số thiết bị OEM. (Ia24bc, b/303823815, b/306235276)
  • Giảm độ nghiêm ngặt của các bước kiểm tra trong FrameMetrics và thêm thông tin chi tiết vào 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

  • Khắc phục lỗi không thiết lập srcset hồ sơ cơ sở trong các biến thể điểm chuẩn. Ngoài ra, sửa lỗi automaticGenerationDuringBuild trong các thư viện gây ra một vòng lặp phụ thuộc. (I28ab7, b/333024280)
  • Sử dụng am force-stop để tắt các ứng dụng 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ố điểm chuẩn StartupMode.COLD gặp sự cố từ "Gói $package không được chạy trước khi khởi động nguội!" do quá trình loại bỏ không thành công hoàn toàn. (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 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 các biến thể kiểm thử (b/307478189)
  • Thêm các thuộc tính để hỗ trợ tích hợp chạy kiểm thử 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.

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 tự động thu thập và đưa hồ sơ cơ sở vào quy trình kiểm thử và xây dựng.
  • BaselineProfileRule.collect hiện đã ổn định, là phiên bản tinh giản và đơn giản của API BaselineProfileRule.collectBaselineProfile thử nghiệm trước đó
    • Bạn chỉ cần chỉ định packageName và điều khiển ứng dụng
  • Đố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 trong mã (đối số BaselineProfileRule.collect) hoặc thậm chí đơn giản hơn trong trình bổ trợ gradle
  • Bản sửa lỗi
    • Khắc phục việc 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 hoàn toàn trạng thái biên dịch cho mỗi quá trình biên dịch một cách chính xác – việc này yêu cầu 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 (chẳng hạn như đăng nhập người dùng) trong nội dung đ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 riêng hoạt động biên dịch ứng dụng và bỏ qua hoạt động 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 quy trình xác thực nhanh hơn (ví dụ: khi tạo điểm chuẩn hoặc trong phần 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 các quy tắc kiểm thử macrobenchmark
    • Thêm đối số androidx.benchmark.perfettoSdkTracing.enable để bật tính năng theo dõi bằng tracing-perfetto, ví dụ: theo dõi quá trình 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ẽ bị ảnh hưởng đáng kể vì 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 mục tiêu để 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 hoặc TraceMetric để tận dụng toàn bộ khả năng truy vấn của Perfetto TraceProcessor.
    • Thêm PowerMetric thử nghiệm để ghi lại 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. API này được dùng nội bộ để trích xuất các 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).
    • Khắc phục 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 (thường là các khung hình trong khi gợn sóng trên API 31 trở lên) (I747d2, b/279088460)
    • Khắc phục lỗi phân tích cú pháp trên các dấu vết > 64 MB (Ief831, b/269949822)
    • Làm rõ các 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 bước kiểm tra mức pin cho các thiết bị không có pin (vi mô và vĩ mô)
    • Cải thiện đầu ra tệp, với các lỗi rõ ràng hơn cho thư mục đầu ra không hợp lệ và các 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ị thông qua MacrobenchmarkScope.dropShaderCache)
    • Khắc phục tính năng dự phòng leanback cho startActivityAndWait.

Microbenchmark

  • Tính năng
    • Quá trình phân tích tài nguyên đượ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 tài nguyên thời gian 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 tài nguyên. 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 hãy lưu ý đến mức hao tổn khi theo dõi).
    • Thêm các API thử nghiệm để kiểm soát BenchmarkState tách biệt với BenchmarkRule, không cần JUnit
    • Thêm bản ghi PerfettoTrace thử nghiệm để bật tính năng ghi lại dấu vết Perfetto, với cấu hình tuỳ chỉnh, tách biệt với các API đo điểm chuẩn.
  • Bản sửa lỗi
    • Giải pháp cho việc thiếu khoảng trắng ở đầu trong kết quả đo điểm chuẩn của Android Studio.
    • Khắc phục vấn đề cảnh báo có thể không in được trong kết quả đ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 Perfetto (Chế độ chạy thử nhanh hơn gấp 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 đầu ra tệp Benchmark để không còn làm hỏng tính năng 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 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 đích.

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

  • Giờ đây, một ngoại lệ (có hướng dẫn khắc phục) sẽ được gửi khi tính năng theo dõi SDK Perfetto không khởi chạy được trong Đ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 sang đị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ử của Studio và sửa tên tệp theo dõi phương thức để trở thành duy nhất trên thiết bị/máy chủ lưu trữ, do đó, các tệp này sẽ không bị ghi đè khi chạy nhiều phép đo điểm chuẩn. (I08e65, b/285912360)
  • Đảm bảo thiết bị đang ở trạng thái thức khi chụ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.

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.

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.