การเปรียบเทียบ

วัดประสิทธิภาพของโค้ดภายใน Android Studio อย่างถูกต้อง
อัปเดตล่าสุด รุ่นที่เสถียร รุ่นที่อาจได้รับการเผยแพร่ รุ่นเบต้า รุ่นอัลฟ่า
7 ตุลาคม 2026 1.5.0 - - 1.6.0-alpha01

การประกาศทรัพยากร Dependency

หากต้องการเพิ่มทรัพยากร Dependency ใน Benchmark คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google

Macrobenchmark

หากต้องการใช้ Macrobenchmark ในโปรเจ็กต์ ให้เพิ่มทรัพยากร Dependency ต่อไปนี้ลงในไฟล์ build.gradle สำหรับ โมดูล Macrobenchmark

Groovy

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

Kotlin

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

Microbenchmark

หากต้องการใช้ Microbenchmark ในโปรเจ็กต์ ให้เพิ่มทรัพยากร Dependency ต่อไปนี้ลงในไฟล์ build.gradle สำหรับ โมดูล Microbenchmark

Groovy

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

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

Kotlin

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

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

ไลบรารี Microbenchmark ยังมีปลั๊กอิน Gradle สำหรับใช้กับโมดูล Microbenchmark ด้วย ปลั๊กอินนี้จะตั้งค่าการกําหนดค่าบิลด์เริ่มต้นสําหรับโมดูล ตั้งค่าการคัดลอกเอาต์พุตการเปรียบเทียบไปยังโฮสต์ และระบุ งาน ./gradlew lockClocks

หากต้องการใช้ปลั๊กอิน ให้ใส่บรรทัดต่อไปนี้ในบล็อก `plugins` ในไฟล์ build.gradle ระดับบนสุด

Groovy

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

Kotlin

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

จากนั้นใช้ปลั๊กอินกับไฟล์ build.gradle ของข้อบังคับ

Groovy

plugins {
  id 'androidx.benchmark'
}

Kotlin

plugins {
    id("androidx.benchmark")
}

ความคิดเห็น

ความคิดเห็นของคุณช่วยเราปรับปรุง Jetpack ให้ดียิ่งขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ในคลังนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว

สร้างปัญหาใหม่

ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของ Issue Tracker

เวอร์ชัน 1.6

เวอร์ชัน 1.6.0-alpha01

7 ตุลาคม 2026

androidx.benchmark:benchmark-*:1.6.0-alpha01 เปิดตัวแล้ว เวอร์ชัน 1.6.0-alpha01 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้งานการเปรียบเทียบ :lockClocks จะใช้โหมดประสิทธิภาพคงที่เมื่อพร้อมใช้งาน แทนที่จะใช้การติดตั้งใช้งานระดับรูทเท่านั้นก่อนหน้านี้ ซึ่งหมายความว่าคุณสามารถล็อกนาฬิกาในอุปกรณ์จริงได้มากขึ้นเพื่อให้ได้ผลลัพธ์ที่เสถียร โดยเฉพาะอย่างยิ่งสำหรับไมโครเบนช์มาร์กที่เสถียร โปรดรายงานปัญหาเกี่ยวกับการควบคุมความร้อนด้วยพฤติกรรมใหม่หากพบ (I0d032)

การเปลี่ยนแปลง API

  • เพิ่ม MemoryProfilingConfig ลงใน ExperimentalConfig เพื่ออนุญาตให้การเรียกใช้ Macrobenchmark เลือกใช้การทำโปรไฟล์ฮีป Perfetto (Ibc931)

แก้ไขข้อบกพร่อง

  • แก้ไขข้อบกพร่องใน Microbenchmark ที่บางครั้งระบบข้ามการบันทึกร่องรอยเมธอดอย่างระมัดระวังเกินไปเพื่อหลีกเลี่ยง ANR (Ifc307)
  • แก้ไขการจับภาพโปรไฟล์พื้นฐานสำหรับกระบวนการที่ไม่ได้ใช้รูปแบบการตั้งชื่อ :<suffix> (I512ab)
  • ตอนนี้ระบบจะรายงานลิงก์การติดตาม Profiler ในส่วน "การติดตามการทำโปรไฟล์" แยกต่างหากในข้อมูลสรุปของ IDE (Id639f)
  • แก้ไขข้อบกพร่องในการล้างข้อมูลไฟล์เสมือนซึ่งจะส่งผลให้เกิด Unable to flush profiles for <packagename> (I48ccc)
  • แก้ไขการซิงโครไนซ์ในร่องรอยเมธอดที่ฝังอยู่ในการติดตามของระบบ Ifd2e33 b/537688349
  • ปลั๊กอิน Gradle ของโปรไฟล์พื้นฐาน - ปรับปรุง CollectBaselineProfileTask เพื่อรองรับการค้นหาไฟล์ test-result.pb ในไดเรกทอรีย่อย ซึ่งช่วยให้เข้ากันได้กับแพลตฟอร์มการทดสอบในตัวแบบใหม่ Id9c488 b/543799367

รุ่น 1.5

เวอร์ชัน 1.5.0

9 กันยายน 2569

androidx.benchmark:benchmark-*:1.5.0 เปิดตัวแล้ว เวอร์ชัน 1.5.0 มีการเปลี่ยนแปลงเหล่านี้

เวอร์ชัน 1.5.0-rc02

26 สิงหาคม 2569

androidx.benchmark:benchmark-*:1.5.0-rc02 เปิดตัวแล้ว เวอร์ชัน 1.5.0-rc02 มีคอมมิตเหล่านี้

เวอร์ชัน 1.5.0-rc01

12 สิงหาคม 2569

androidx.benchmark:benchmark-*:1.5.0-rc01 เปิดตัวแล้ว เวอร์ชัน 1.5.0-rc01 มีคอมมิตเหล่านี้

เวอร์ชัน 1.5.0-beta01

29 กรกฎาคม 2026

androidx.benchmark:benchmark-*:1.5.0-beta01 เปิดตัวแล้ว เวอร์ชัน 1.5.0-beta01 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • ตอนนี้ PerfettoCapture และ PerfettoTraceRule สามารถบันทึกการติดตามที่กำลังดำเนินการและผสานรวมเพื่อสร้างแพ็กเกจเป้าหมายได้แล้ว (I9a00b, b/497959820)

เวอร์ชัน 1.5.0-alpha07

1 กรกฎาคม 2026

androidx.benchmark:benchmark-*:1.5.0-alpha07 เปิดตัวแล้ว เวอร์ชัน 1.5.0-alpha07 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • การบันทึกการติดตาม Perfetto ที่ง่ายขึ้นในอุปกรณ์ (I48810)
  • ย้ายส่วนขยาย TraceProcessor.runServer เวอร์ชันทดลอง API จาก androidx.benchmark:benchmark-macro ไปยัง androidx.benchmark:benchmark-common และไปยังแพ็กเกจ androidx.benchmark ซึ่งจะช่วยให้ใช้ใน Microbenchmark ได้ในอนาคต (Ie25bb, b/393640753)

แก้ไขข้อบกพร่อง

  • อัปเดตการติดตั้งใช้งาน Traceprocessor (รวมถึงการบันทึก Perfetto Trace ที่แยกออกมา) เพื่อใช้ Perfetto v56.0 (I8fb9d)
  • ตั้งค่า androidx.benchmark.requireAot และ androidx.benchmark.requireAot เป็น "จริง" โดยค่าเริ่มต้น ค่าเริ่มต้นที่ปลอดภัยยิ่งขึ้นเหล่านี้ ช่วยให้มั่นใจได้ว่าการคอมไพล์จะดำเนินการก่อนการเรียกใช้ Microbenchmark (เปิดอยู่โดยค่าเริ่มต้นด้วยปลั๊กอิน Gradle สำหรับการทดสอบประสิทธิภาพเมื่อใช้ AGP 8.4 ขึ้นไป) และไม่ได้ใช้ measureRepeated ในเทรดหลัก ซึ่งอาจ ทำให้เกิด ANR (I1bc3c, b/379115078)
  • เพิ่มการหมดเวลาการสิ้นสุดของ Perfetto จาก 5 เป็น 30 วินาที (สําหรับ เซสชัน Perfetto ที่บันทึกการทดสอบเท่านั้น) เพิ่มการบันทึกข้อผิดพลาดที่ชัดเจนยิ่งขึ้น เมื่อเกิดปัญหา (If188f, b/435589290)

เวอร์ชัน 1.5.0-alpha06

6 พฤษภาคม 2026

androidx.benchmark:benchmark-*:1.5.0-alpha06 เปิดตัวแล้ว เวอร์ชัน 1.5.0-alpha06 มีการเปลี่ยนแปลงเหล่านี้

แก้ไขข้อบกพร่อง

  • จัดการสภาพแวดล้อมแบบหลายคนหนึ่งเครื่องอย่างราบรื่นเมื่อย้ายไฟล์จากไดเรกทอรีเอาต์พุตการเปรียบเทียบไปยังไดเรกทอรีเอาต์พุตการทดสอบเพิ่มเติม (I90da5, b/489358149)

เวอร์ชัน 1.5.0-alpha05

25 มีนาคม 2026

androidx.benchmark:benchmark-*:1.5.0-alpha05 เปิดตัวแล้ว เวอร์ชัน 1.5.0-alpha05 มีคอมมิตเหล่านี้

แก้ไขข้อบกพร่อง

  • อัปเดต ArtMetric เพื่อพิจารณาแพ็กเกจระดับบนสุด ซึ่งมีความสำคัญอย่างยิ่งเมื่อใช้ AGP/R8 9.1 ขึ้นไป หรือตัวเลือกส่วนกลาง -repackageclasses ก่อนหน้านี้ ArtMetric จะตรวจไม่พบการโหลดคลาสเหล่านี้ในการวัด artClassLoad... (If8a35, b/487402058)

ฟีเจอร์ใหม่ - เพิ่มอาร์กิวเมนต์การวัดประสิทธิภาพใหม่ androidx.benchmark.requireLockedClocks ที่ช่วยให้ตรวจสอบได้ว่าอุปกรณ์ที่รูทมีการล็อกสัญญาณนาฬิกาของ CPU หรือไม่ (Id82e8, b/468039042)

เวอร์ชัน 1.5.0-alpha04

11 มีนาคม 2026

androidx.benchmark:benchmark-*:1.5.0-alpha04 เปิดตัวแล้ว เวอร์ชัน 1.5.0-alpha04 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่ม JvmOverloads ไปยัง PowerMetric.Energy และ PowerMetric.Power (Iac0d0, b/481371562)

แก้ไขข้อบกพร่อง

  • อัปเดต ArtMetric เพื่อพิจารณาแพ็กเกจระดับบนสุด ซึ่งมีความสำคัญอย่างยิ่งเมื่อใช้ AGP/R8 9.1 ขึ้นไป หรือตัวเลือกส่วนกลาง -repackageclasses ก่อนหน้านี้ ArtMetric จะตรวจไม่พบการโหลดคลาสเหล่านี้ในการวัด artClassLoad... (I207ca, b/487402058)

เวอร์ชัน 1.5.0-alpha03

11 กุมภาพันธ์ 2026

androidx.benchmark:benchmark-*:1.5.0-alpha03 เปิดตัวแล้ว เวอร์ชัน 1.5.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้

  • อัปเดตให้ขึ้นอยู่กับ UiAutomator 2.4 เบต้า

เวอร์ชัน 1.5.0-alpha02

28 มกราคม 2026

androidx.benchmark:benchmark-*:1.5.0-alpha02 เปิดตัวแล้ว เวอร์ชัน 1.5.0-alpha02 มีคอมมิตเหล่านี้

แก้ไขข้อบกพร่อง

  • เพิ่มการรองรับบางส่วนสำหรับการสร้างโปรไฟล์พื้นฐานสำหรับโมดูล Kotlin Multiplatform โดยปกติแล้ว คุณจะกำหนดทรัพยากร Dependency ในโปรไฟล์ได้โดยใช้การกำหนดค่า Gradle baselineProfile ในบล็อก Dependency แต่ปัจจุบันวิธีนี้ใช้กับโมดูล KMP ไม่ได้

    kotlin {
      androidLibrary {
        namespace = "com.example.namespace"
        compileSdk = 36
      }
      sourceSets {
        androidMain.dependencies {
          // THIS DOES NOT WORK
          // baselineProfile(":yourProducerProject")
        }
      }
    }
    
  • แต่คุณควรระบุการขึ้นต่อกันโดยใช้baselineProfile **ส่วนขยายแทน (Ie19c4)

    plugins {
        id("org.jetbrains.kotlin.multiplatform")
        id("com.android.kotlin.multiplatform.library")
        id("androidx.baselineprofile.consumer")
    }
    
    kotlin {
      androidLibrary {
        namespace = "com.example.namespace"
        compileSdk = 36
      }
      sourceSets {
        androidMain.dependencies {
          // ...
        }
      }
    }
    // Define dependencies
    // This works !
    baselineProfile {
      variants {
        androidMain {
          from(project(":yourProducerProject"))
        }
      }
    }
    

เวอร์ชัน 1.5.0-alpha01

17 ธันวาคม 2025

androidx.benchmark:benchmark-*:1.5.0-alpha01 เปิดตัวแล้ว เวอร์ชัน 1.5.0-alpha01 มีคอมมิตเหล่านี้

  • Macrobenchmark 1.5 ใช้ UiAutomator 2.4 เพื่อลดความซับซ้อนในการโต้ตอบกับแอปพลิเคชันที่วัดผล ตอนนี้ออบเจ็กต์ MacrobenchmarkScope จะขยาย UiAutomatorTestScope ซึ่งช่วยให้คุณใช้ UiAutomator API ที่ทันสมัย เช่น onElement { ... }.click() ได้
  • ดูข้อมูลเพิ่มเติมเกี่ยวกับ UiAutomator 2.4 ได้ที่เอกสารประกอบ

ฟีเจอร์ใหม่

  • ปลั๊กอิน Gradle ของโปรไฟล์พื้นฐานไม่จำเป็นต้องใช้ newDsl=false ใน AGP 9.0 อีกต่อไป (Iaaac7, b/443311090)
  • ขยายการกำหนดค่าการติดตามให้รวมขนาดคอร์ (เช่น เล็ก/ใหญ่) ในการติดตามระบบ/Perfetto ที่บันทึกไว้ในการเปรียบเทียบ (I8e397, b/457469959)

การเปลี่ยนแปลง API

  • (ใน UiAutomator) เปลี่ยน startActivity wait เป็น wait for new window (I35da6, b/440021797)
  • ทำให้ BlackHole API ใน androidx.benchmark เสถียร (I2b67e, b/451749438)
  • เพิ่ม @JvmOverloads สำหรับคอนสตรัคเตอร์ที่อำนวยความสะดวกสำหรับ PerfettoTraceRule (I1510a, b/443763207)

เวอร์ชัน 1.4

เวอร์ชัน 1.4.1

10 กันยายน 2025

androidx.benchmark:benchmark-*:1.4.1 เปิดตัวแล้ว เวอร์ชัน 1.4.1 มีคอมมิตเหล่านี้

แก้ไขข้อบกพร่อง

  • แก้ไข perfettoSdkTracing=true (เช่น เมื่อติดตาม Compose ใน Microbenchmark) จะหยุดกระบวนการเป้าหมายหากทำงานอยู่แล้ว และไม่ได้ระบุ StartupMode (Ib2c1f)

เวอร์ชัน 1.4.0

30 กรกฎาคม 2025

androidx.benchmark:benchmark-*:1.4.0 เปิดตัวแล้ว เวอร์ชัน 1.4.0 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.3.0

Microbenchmark

  • ย้ายงาน Gradle lockClocks และ unlockClocks ไปไว้ในโปรเจ็กต์การเปรียบเทียบแทนที่จะอยู่ที่ระดับบนสุดเพื่อรักษาระดับการแยกโปรเจ็กต์ Gradle
  • เปลี่ยนโครงสร้างภายในโค้ด BenchmarkRule เพื่อสร้างบน Coroutine และรองรับลักษณะการทำงานของ yield() ที่ดียิ่งขึ้น ซึ่งจะช่วยลดความเสี่ยงของ ANR ในระหว่างการเรียกใช้การเปรียบเทียบได้อย่างมาก โดยเฉพาะการเรียกใช้ CI ที่ใช้เวลานาน หมายเหตุ: การเปรียบเทียบ UI ควรทำงานร่วมกับ measureRepeatedOnMainThread

มาโครเบนช์มาร์ก

  • เพิ่มวิธีแก้ปัญหาชั่วคราวใน API 34 ขึ้นไปสำหรับ CompilationMode.None() จะมีประสิทธิภาพไม่สอดคล้องกันเนื่องจากการตรวจสอบของ ART ตอนนี้จะคอมไพล์แอปบางส่วนหลังจากเปิดตัวครั้งแรก
  • ฟีเจอร์ทดลอง - ข้อมูลเชิงลึกเกี่ยวกับการเริ่มต้นระบบสามารถไฮไลต์ปัญหาที่พบบ่อยบางอย่างใน Macrobenchmark ของการเริ่มต้นระบบได้โดยการส่ง MacrobenchmarkRule(..., experimentalConfig = ExperimentalConfig(StartupInsightsConfig(isEnabled = true)))
  • เพิ่ม ArtMetric ซึ่งใช้ตรวจหาการคอมไพล์ JIT และการโหลดคลาสที่ไม่ได้เพิ่มประสิทธิภาพได้ ซึ่งทั้ง 2 อย่างนี้มีประโยชน์ในการตรวจสอบการเพิ่มประสิทธิภาพโปรไฟล์พื้นฐาน

โปรไฟล์พื้นฐาน

  • ตอนนี้ BaselineProfileRule จะรวบรวมโปรไฟล์สำหรับแอปแบบหลายกระบวนการ

การเปลี่ยนแปลงอื่นๆ

  • เราได้แยก TraceProcessor ออกมาเป็นไลบรารีของตัวเอง (androidx.benchmark:benchmark-traceprocessor) เพื่อให้สามารถใช้ภายนอกเมตริก Macrobenchmark ได้ในกรณีอื่นๆ นอกจากนี้ ยังเรียกใช้ใน JVM บนเดสก์ท็อปได้ด้วยการกำหนด ServerLifecycleManager ของคุณเอง

เวอร์ชัน 1.4.0-rc01

18 มิถุนายน 2025

androidx.benchmark:benchmark-*:1.4.0-rc01 เปิดตัวแล้ว เวอร์ชัน 1.4.0-rc01 มีคอมมิตเหล่านี้

แก้ไขข้อบกพร่อง

  • เพิ่มวิธีแก้ปัญหาสำหรับรูปภาพรันไทม์ที่ทำให้ CompilationMode.None() ไม่วัดประสิทธิภาพในกรณีที่แย่ที่สุดหลังจากการทำซ้ำครั้งแรก แต่การแก้ปัญหานี้ต้องใช้เวลา 5 วินาทีเพื่อตั้งใจทำให้รูปภาพรันไทม์เสียหายเมื่อเริ่มต้นชุดมาโครเบนช์มาร์กแต่ละชุด (I4a4f1)

เวอร์ชัน 1.4.0-beta02

4 มิถุนายน 2025

androidx.benchmark:benchmark-*:1.4.0-beta02 เปิดตัวแล้ว เวอร์ชัน 1.4.0-beta02 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่ม BaselineProfileConfig.Builder เพื่อให้เรียกใช้ BaselineProfileRule.collectWithResults() สำหรับนักพัฒนาแอป Java ได้ง่ายขึ้น (I94905)

เวอร์ชัน 1.4.0-beta01

7 พฤษภาคม 2025

androidx.benchmark:benchmark-*:1.4.0-beta01 เปิดตัวแล้ว เวอร์ชัน 1.4.0-beta01 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่มตัวแปรคอนสตรักเตอร์ PerfettoTraceRule ซึ่งยอมรับ PerfettoConfig (Ie53ba)

แก้ไขข้อบกพร่อง

  • อัปเดตรูปแบบลิงก์ข้อมูลเชิงลึกเกี่ยวกับการเริ่มต้นระบบของ TraceProcessor ให้ใช้ปลั๊กอินที่ถูกต้องและตัวคั่นที่ชัดเจนขึ้น (: สั้นกว่า %3A และรองรับทั้ง 2 แบบ) (Ie18ef)
  • ใช้การบังคับให้หยุดเพื่อหยุดกระบวนการเสมอ แม้ว่าจะมีการรูทและหยุดแอปของระบบก็ตาม แก้ไขข้อยกเว้นของแบบฟอร์ม: Expected no stdout/stderr from killall ... No such process (Idca2c)

การมีส่วนร่วมภายนอก

  • เพิ่มเครื่องมือจัดการข้อยกเว้นพร็อกซีสำหรับ TraceProcessorHttpServer (I480f5) แล้ว

เวอร์ชัน 1.4.0-alpha11

9 เมษายน 2025

androidx.benchmark:benchmark-*:1.4.0-alpha11 เปิดตัวแล้ว เวอร์ชัน 1.4.0-alpha11 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เปลี่ยนระยะหมดเวลาของอาร์กิวเมนต์ของ TraceProcessor: ระยะเวลาเป็น timeoutMs แบบยาวเพื่อความสามารถในการใช้งานของผู้เรียก Java (I9fbb5)
  • ทำเครื่องหมายคอนสตรัคเตอร์ TraceProcessor เป็นภายใน ผู้เรียกใช้ควรใช้ TraceProcessor.startServer หรือ TraceProcessor.runServer (Ia8c5b)

แก้ไขข้อบกพร่อง

  • เมื่อปิดแอปพลิเคชันด้วย MacrobenchmarkScope.killProcess ให้ตรวจสอบผลลัพธ์ของคำสั่งปิดเพื่อป้องกันไม่ให้เกิดข้อผิดพลาดแบบเงียบและข้อผิดพลาดจากไทม์เอาต์ (I84555)

การอัปเดตทรัพยากร Dependency

  • ตอนนี้ไลบรารีนี้กำหนดเป้าหมายเป็นระดับภาษา Kotlin 2.0 และต้องใช้ KGP 2.0.0 ขึ้นไป (Idb6b5)

เวอร์ชัน 1.4.0-alpha10

26 มีนาคม 2025

androidx.benchmark:benchmark-*:1.4.0-alpha10 เปิดตัวแล้ว เวอร์ชัน 1.4.0-alpha10 มีการคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่มระยะหมดเวลาเริ่มต้นสำหรับการโหลดเซิร์ฟเวอร์และการค้นหา TraceProcessor เป็น 120 วินาที (จากเดิม 60/30 วินาที) และทำให้ทั้ง 2 อย่างกำหนดค่าได้ด้วยพารามิเตอร์ระยะหมดเวลา 1 รายการ (Ifec87)

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาบางอย่างที่เกิดขึ้นเมื่อทำการเปรียบเทียบหรือบันทึกโปรไฟล์ของแอปโดยไม่มี profileinstaller และรวม BroadcastReciever ไว้ด้วย การดำเนินการนี้จะส่งผลต่อการเรียกใช้ในอุปกรณ์ที่รูทเท่านั้น (Ied308)

เวอร์ชัน 1.4.0-alpha09

12 มีนาคม 2025

androidx.benchmark:benchmark-*:1.4.0-alpha09 เปิดตัวแล้ว เวอร์ชัน 1.4.0-alpha09 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่ม TraceProcessor และ Session API พร้อมแฮนเดิลที่ปิดได้ เพื่อให้ใช้งานกับวงจรที่กำหนดเองได้ง่ายขึ้น นอกจากนี้ยังเป็นขั้นตอนที่ช่วยให้ใช้ Coroutine และ Java API ได้ง่ายขึ้นด้วย ตอนนี้ฟังก์ชันส่วนขยายสำหรับ TraceProcessor.runServer {} มีสถานะเป็นเวอร์ชันทดลอง เนื่องจากมีแนวโน้มที่จะย้ายและเปลี่ยนเป็นเวอร์ชันที่ไม่ใช่เวอร์ชันทดลองในอนาคต (I358b4)

แก้ไขข้อบกพร่อง

  • แก้ไขการจับภาพการเปรียบเทียบและโปรไฟล์พื้นฐานไม่ทำงานกับ API 36 เนื่องจากการเปลี่ยนแปลงใน pgrep toybox ที่ตอนนี้ต้องใช้ -a เพื่อพิมพ์บรรทัดคำสั่งแบบเต็ม (Idc991)
  • กรองการกำหนดค่าการติดตามเริ่มต้นเพื่อลดความเสี่ยงที่ข้อมูลจะสูญหายในการติดตามในระดับ API ที่ใหม่กว่า (I54e8a)
  • เพิ่มอาร์กิวเมนต์การวัดคุม androidx.benchmark.killExistingPerfettoRecordings เวอร์ชันทดลอง ซึ่งตั้งค่าเป็น false ได้เพื่อให้การจับภาพการติดตาม Perfetto ที่มีอยู่ก่อนหน้าทำงานต่อไปได้ โดยค่าเริ่มต้น ระบบจะปิดการบันทึกการติดตาม Perfetto ที่มีอยู่ก่อนแล้วในอุปกรณ์เพื่อป้องกันการรบกวน (I02a3c)
  • ตอนนี้ช่อง JSON context.osCodenameAbbreviated จะเป็น REL สำหรับเวอร์ชันระบบปฏิบัติการที่เผยแพร่ที่ API 35 ขึ้นไป เนื่องจากแพลตฟอร์มที่เกี่ยวข้องไม่รองรับชื่อเวอร์ชันที่ไม่ใช่ตัวเลขอีกต่อไป (Ib17fd)
  • แก้ไขข้อขัดข้องใน FrameTimingMetric เมื่อเกิดเฟรมที่ซิงค์ใหม่ (I7c6f4, b/394610806)
  • ไม่ถือว่า Choreographer#doFrame เป็นส่วนบนสุดของสแตกเฟรมในเธรดหลักสำหรับ FrameTimingQuery อีกต่อไป (Iee0e0, b/340206285)

เวอร์ชัน 1.4.0-alpha08

12 กุมภาพันธ์ 2025

androidx.benchmark:benchmark-*:1.4.0-alpha08 เปิดตัวแล้ว เวอร์ชัน 1.4.0-alpha08 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • ย้าย API ส่วนขยาย TraceProcessor.runSession() ไปเป็นเวอร์ชันทดลอง เนื่องจากมีแนวโน้มที่จะย้ายไปเป็นคอนสตรัคเตอร์แบบรูปธรรมในท้ายที่สุดบน Android (Ib0528, b/393640753)
  • การใช้งาน Startup Insights ส่วนใหญ่เป็นแบบสาธารณะ/ทดลอง และย้ายไปยังอาร์ติแฟกต์ TraceProcessor ดู StartupInsights (I0aa00)
  • เลิกใช้งาน BenchmarkRule.runWithTimingDisabled {} เพื่อใช้ BenchmarkRule.runWithMeasurementDisabled {} ซึ่งอธิบายลักษณะการทำงานได้ชัดเจนกว่า โดยเมตริกทั้งหมดจะหยุดชั่วคราว นอกจากนี้ ให้แสดงคลาสใหญ่สุด MicrobenchmarkScope เนื่องจากไม่สามารถประกาศฟังก์ชัน runWithMeasurementDisabled อีกครั้งเพื่อเปิดการเข้าถึงได้ เนื่องจากเป็นแบบอินไลน์ (I9e23b, b/389149423, b/149979716)
  • ไลบรารีการเปรียบเทียบย้ายไปใช้ Kotlin 2.0 แล้ว (I9d1e0)
  • นำอาร์กิวเมนต์การวัดผล androidx.benchmark.startupProfiles.enable ออกแล้ว ซึ่งไม่มีประโยชน์อีกต่อไป เนื่องจากสามารถควบคุมได้โดยอาร์กิวเมนต์ includeInStartupProfile ใน BaselineProfileRule.collect() (I39eb4)

แก้ไขข้อบกพร่อง

  • ลดจำนวนฟังก์ชันภายในของ Microbenchmark ที่เรียกใช้ระหว่างการทำโปรไฟล์เพื่อให้ เช่น ร่องรอยของเมธอดชัดเจนยิ่งขึ้น (Ifaed8)
  • การแก้ไขเชิงคาดการณ์สำหรับข้อขัดข้อง: "หยุด [ProcessPid(processName=perfetto, pid=...)] ไม่สำเร็จ" ตอนนี้ Benchmark จะบันทึกข้อความแทนการขัดข้องเมื่อไม่สามารถหยุดกระบวนการ Perfetto ในเบื้องหลังก่อนเรียกใช้การเปรียบเทียบ (I37d3e, b/323601788)
  • แก้ไข IllegalStateExceptions ที่มีป้ายกำกับ "Expected pm dump-profiles stdout" ซึ่งเกิดจากการตรวจสอบรูปแบบเอาต์พุตที่เข้มงวดเกินไป (I358dc)

เวอร์ชัน 1.4.0-alpha07

29 มกราคม 2025

androidx.benchmark:benchmark-*:1.4.0-alpha07 เปิดตัวแล้ว เวอร์ชัน 1.4.0-alpha07 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้ BaselineProfileRule ได้เปิดตัว collectWithResults(...) API ซึ่งมีรายการเส้นทางไปยังโปรไฟล์ที่คำนวณแล้ว (I056f8)
  • เพิ่มandroidx.benchmark.measureRepeatedOnMainThread.throwOnDeadlineอาร์กิวเมนต์การวัดคุม ซึ่งตั้งค่าเป็น false เพื่อปิดใช้ลักษณะการทำงานของ measureRepeatedOnMainThread เมื่อถึงกำหนดเวลาสำหรับการทดสอบในเครื่องได้ ไม่แนะนําให้ใช้ในกรณีอื่นๆ เนื่องจากจะเพิ่มโอกาสที่จะเกิด ANR ในระหว่างการทดสอบ (Idbeec, b/353226476)

การเปลี่ยนแปลง API

  • เพิ่ม @JvmOverloads ไปยังตัวสร้าง MicrobenchmarkConfig แล้ว (I13fd3)
  • เปลี่ยนโครงสร้างภายในโค้ด BenchmarkRule เพื่อสร้างบน Coroutine และรองรับลักษณะการทำงานของ yield() ที่ดียิ่งขึ้น การเปลี่ยนโครงสร้างภายในโค้ดนี้ได้นำ API ของ BenchmarkState เวอร์ชันทดลองออกหลายรายการ แต่จะมีการแทนที่ตามความจำเป็นในภายหลัง นอกจากนี้ ยังเพิ่ม runWithMeasurementDisabled เพื่อชี้แจงลักษณะการทำงาน (ระบบจะหยุดการวัดทั้งหมดชั่วคราว) เราจะเลิกใช้งาน runWithTimingDisabled ในอนาคต (I19837, b/389149423, b/311242861)
  • ย้าย PerfettoTraceProcessor ไปยัง TraceProcessor ในอาร์ติแฟกต์ androidx.benchmark:benchmark-traceprocessor ใหม่ และทำให้ API ส่วนใหญ่ไม่ใช่เวอร์ชันทดลอง TraceMetric ที่กำหนดเองหรือสิ่งใดก็ตามที่อ่านจากร่องรอยจะต้องอัปเดตเป็นการนำเข้า TraceProcessor ใหม่ API TraceProcessor ใหม่ทำงานเหมือนกับ API เดิมทุกประการ แต่เป็นไลบรารีอินเทอร์เฟซแบบสแตนด์อโลน (คล้ายกับเลเยอร์ androidx.sqlite จาก Room) ที่มีการติดตั้งใช้งานเฉพาะ Android ในตัวใน Macrobenchmark อาร์ติแฟกต์ใหม่สามารถใช้กับ JVM ได้เช่นกัน แต่ตอนนี้คุณจะต้องเริ่มสำเนาไบนารี TraceProcessor ของคุณเองและเสนอพอร์ตเพื่อเชื่อมต่อ (I3a767, I62563, b/381134564)

แก้ไขข้อบกพร่อง

  • แสดงข้อความแสดงข้อผิดพลาดที่ชัดเจนขึ้นเมื่อ MacrobenchmarkScope.startActivityAndWait ไม่สามารถเปิดกระบวนการเป้าหมาย (อาจเกิดจากการขัดข้องในกระบวนการเป้าหมาย) แทนข้อความ "ไม่สามารถยืนยันการเปิดกิจกรรมเสร็จสมบูรณ์" ที่คลุมเครือกว่า (I3539b)
  • แก้ไขข้อผิดพลาดด้านไวยากรณ์หลายรายการในตัวอย่าง Kotlin และการไฮไลต์ไวยากรณ์ในตัวอย่าง Java / build.gradle หลายรายการ (Ib3808)
  • ชี้แจงเอกสารพารามิเตอร์ ArtMetric และ CaptureInfo (I96e60)

เวอร์ชัน 1.4.0-alpha06

11 ธันวาคม 2024

androidx.benchmark:benchmark-*:1.4.0-alpha06 เปิดตัวแล้ว เวอร์ชัน 1.4.0-alpha06 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • นำการใช้งาน @Language("sql") ใน PerfettoTraceProcessor.Session.query() ออกเนื่องจากไฮไลต์/การแยกวิเคราะห์ของ Studio ไม่ทำงาน (Idc2fa, b/377733398)

แก้ไขข้อบกพร่อง

  • ตอนนี้ไลบรารีนี้ใช้คำอธิบายประกอบ Nullness ของ JSpecify ซึ่งเป็นการใช้ประเภท นักพัฒนา Kotlin ควรใช้อาร์กิวเมนต์คอมไพเลอร์ต่อไปนี้เพื่อบังคับใช้การใช้งานที่ถูกต้อง: -Xjspecify-annotations=strict (นี่เป็นค่าเริ่มต้นที่เริ่มตั้งแต่เวอร์ชัน 2.1.0 ของคอมไพเลอร์ Kotlin) (I46810, b/326456246)
  • แก้ไข ArtMetric เพื่อรายงานการโหลดคลาส (ไม่ใช่ init) และปรับปรุงเอกสารเพื่อชี้แจงลักษณะการทำงานของรันไทม์ (I9915c)
  • ใน Android Multiuser ให้เรียกใช้คำสั่งในฐานะรูทเฉพาะในอุปกรณ์ที่รูทแล้วเท่านั้น (I88b44)

เวอร์ชัน 1.4.0-alpha05

13 พฤศจิกายน 2024

androidx.benchmark:benchmark-*:1.4.0-alpha05 เปิดตัวแล้ว เวอร์ชัน 1.4.0-alpha05 มีการเปลี่ยนแปลงเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาใน API 34 ขึ้นไปที่ CompilationMode.None() มีประสิทธิภาพไม่สอดคล้องกันซึ่งไม่ได้แสดงถึงประสิทธิภาพเริ่มต้นที่แย่ที่สุด วิธีนี้ใช้เพื่อหลีกเลี่ยงการเปลี่ยนแปลงแพลตฟอร์มที่อนุญาตให้สถานะการคอมไพล์ของ ART verify คอมไพล์แอปบางส่วน (มีผลกับการโหลดคลาสเท่านั้น) หลังจากเปิดใช้ครั้งแรกไม่นาน (Ie48d0)
  • แก้ไขปัญหาที่การติดตาม (โดยเฉพาะการติดตามระยะสั้น) อาจบันทึกการวัดผลที่ไม่รายงานจากเมตริก Macrobenchmark ในตัว เนื่องจากชื่อกระบวนการถูกตัดทอนภายในร่องรอย Perfetto ตอนนี้ Macrobenchmark จะแก้ปัญหานี้โดยค้นหาชื่อแพ็กเกจที่ถูกตัดในคำค้นหาในตัวทั้งหมด นอกเหนือจากชื่อแพ็กเกจที่คาดไว้ โปรดทราบว่าการติดตั้งใช้งาน TraceMetric ที่กำหนดเองหรือผู้เรียกใช้ PerfettoSession.query โดยตรงอื่นๆ สามารถติดตั้งใช้งานลักษณะการทำงานเดียวกันนี้ได้โดยเปลี่ยน process.name LIKE "$packageName" ในการค้นหา Perfetto ให้เป็น (process.name LIKE "$packageName" OR process.name LIKE "$(packageName.takeLast(15))") แทน (I5bf01, b/377565760)

เวอร์ชัน 1.4.0-alpha04

30 ตุลาคม 2024

androidx.benchmark:benchmark-*:1.4.0-alpha04 เปิดตัวแล้ว เวอร์ชัน 1.4.0-alpha04 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • (เวอร์ชันทดลอง) เปิดใช้การสร้างโปรไฟล์พื้นฐานและการเปรียบเทียบในแอปที่ติดตั้งสำหรับผู้ใช้รอง เช่น แอปใดก็ได้ในอุปกรณ์ Android Auto แบบ Headless เราได้ทดสอบการรองรับนี้ในบางสถานการณ์แล้ว แต่โปรดแจ้งให้เราทราบพร้อมข้อบกพร่องหากไม่ได้ผลสำหรับคุณ (I9fcbe, b/356684617, b/373641155)

การแก้ไขข้อบกพร่อง

  • isProfileable จะถูกลบล้างเสมอในการสร้างการเปรียบเทียบ และisDebuggable จะถูกลบล้างเสมอทั้งในการเปรียบเทียบและในการสร้าง nonMinified (การจับภาพโปรไฟล์พื้นฐาน) (I487fa, b/369213505)
  • แก้ไขการตรวจหาการคอมไพล์ในอุปกรณ์จริงบางรุ่นก่อน API 28 ซึ่งส่งผลต่อ json context.compilationMode รวมถึงลักษณะการทำงานของ androidx.benchmark.requireAot=true (ซึ่งจะไม่แสดงข้อผิดพลาดอย่างไม่ถูกต้องอีกต่อไป) (Ic3e08, b/374362482)
  • ในCpuEventCounter เมตริก ให้ส่งข้อยกเว้นหากพบการวัดที่ไม่ถูกต้อง (เช่น instructions/cpucycles==0) (I8c503)

เวอร์ชัน 1.4.0-alpha03

16 ตุลาคม 2024

androidx.benchmark:benchmark-*:1.4.0-alpha03 เปิดตัวแล้ว เวอร์ชัน 1.4.0-alpha03 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • Macrobenchmark: เพิ่ม ArtMetric ซึ่งใช้เพื่อตรวจสอบความครอบคลุมของโปรไฟล์หรือประสิทธิภาพ Android Runtime ทั่วไปได้ บันทึกจำนวนและระยะเวลาทั้งหมดของ JIT, การเริ่มต้นคลาส (หากมี) และการยืนยันคลาส นอกจากนี้ ยังมีการเปลี่ยนแปลงCaptureInfoเพื่อรวมเวอร์ชัน ART mainline ที่ไม่บังคับพร้อมค่าเริ่มต้น (I930f7)
  • เพิ่ม coefficientOfVariation ลงในเอาต์พุต JSON ของการเปรียบเทียบเพื่อแสดงความเสถียรในการเรียกใช้การเปรียบเทียบที่กำหนด (Ib14ea)

แก้ไขข้อบกพร่อง

  • แก้ไข CollectBaselineProfileTask เมื่ออุปกรณ์ AVD มีช่องว่าง (Ia0225, b/371642809)
  • การแก้ไขข้อผิดพลาดจากข้อยกเว้น StartupMode.COLD: Package <packagename> must not be running prior to cold start! ตอนนี้ MacrobenchmarkScope.killProcess() (รวมถึงการทดสอบที่ดำเนินการก่อนการทำซ้ำแต่ละครั้ง ซึ่งใช้เพื่อใช้ลักษณะการทำงาน StartupMode.COLD) จะรอเพื่อยืนยันว่ากระบวนการของแอปหยุดทำงานทั้งหมดแล้ว (I60aa6, b/351582215)
  • แก้ไขปัญหาที่ข้อผิดพลาด UNLOCKED_ แสดงในโปรแกรมจำลองที่รูทบางโปรแกรม (Ic5117)
  • ตอนนี้ไลบรารีนี้ใช้คำอธิบายประกอบเกี่ยวกับค่า Null ของ JSpecify ซึ่งเป็นการใช้งานประเภท นักพัฒนา Kotlin ควรใช้อาร์กิวเมนต์คอมไพเลอร์ต่อไปนี้เพื่อบังคับใช้การใช้งานที่ถูกต้อง: -Xjspecify-annotations=strict (นี่เป็นค่าเริ่มต้นที่เริ่มตั้งแต่เวอร์ชัน 2.1.0 ของคอมไพเลอร์ Kotlin) (I7104f, b/326456246)

เวอร์ชัน 1.4.0-alpha02

2 ตุลาคม 2024

androidx.benchmark:benchmark-*:1.4.0-alpha02 เปิดตัวแล้ว เวอร์ชัน 1.4.0-alpha02 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • ย้ายงาน Gradle lockClocks และ unlockClocks ไปยังโปรเจ็กต์การเปรียบเทียบ แทนที่จะพร้อมใช้งานที่ระดับบนสุด การเปลี่ยนแปลงนี้จำเป็นเนื่องจากไม่มีวิธีลงทะเบียนการดำเนินการเหล่านี้เป็นการดำเนินการระดับบนสุดโดยไม่ทำลายการแยกโปรเจ็กต์ (I02b8f, b/363325823)

แก้ไขข้อบกพร่อง

  • ตอนนี้ BaselineProfileRule จะรวบรวมโปรไฟล์สำหรับแอปที่มีหลายกระบวนการโดยส่งสัญญาณไปยังแต่ละกระบวนการที่ทำงานอยู่เมื่อสิ้นสุดบล็อกเพื่อดัมพ์โปรไฟล์ หากการคอมไพล์ตามโปรไฟล์ไม่พบกระบวนการที่จะออกอากาศให้สำเร็จ การคอมไพล์จะล้มเหลวเนื่องจากไม่คาดว่าจะมีข้อมูลโปรไฟล์อยู่ภายใน นอกจากนี้ ยังได้เพิ่มอาร์กิวเมนต์การวัดประสิทธิภาพเพื่อควบคุมระยะเวลารอการทิ้งข้อมูล: androidx.benchmark.saveProfileWaitMillis (I0f519, b/366231469)
  • จาก Benchmark 1.3.2: แก้ไข Firebase Test Lab (FTL) ที่ไม่สามารถดึงไฟล์ผลลัพธ์ Baseline Profile หรือ Macrobenchmark จากปลั๊กอิน Gradle ของ Baseline Profile (I2f678, b/285187547)

หากต้องการใช้ FTL ให้ใช้ปลั๊กอินกับโมดูลโปรไฟล์พื้นฐานในบล็อกปลั๊กอิน โดยทำดังนี้

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

จากนั้นกำหนดค่า Firebase Test Lab ด้วยข้อมูลต่อไปนี้

  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}")
          }
      }
  }

นอกจากนี้ คุณต้องเพิ่มอุปกรณ์ FTL ที่สร้างขึ้นลงในส่วนขยายโปรไฟล์พื้นฐานด้วย โดยทำดังนี้

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

เวอร์ชัน 1.4.0-alpha01

18 กันยายน 2024

androidx.benchmark:benchmark-*:1.4.0-alpha01 เปิดตัวแล้ว เวอร์ชัน 1.4.0-alpha01 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่ - ข้อมูลเชิงลึกเกี่ยวกับการเริ่มต้นแอป

  • คุณเปิดใช้ข้อมูลเชิงลึกเกี่ยวกับการเริ่มต้นแอปเวอร์ชันแรกได้ใน Macrobenchmark (09fae38)

วิธีเปิดใช้ในการเปรียบเทียบการเริ่มต้นระบบ

  @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(...)
      }
  }

จากนั้นการเรียกใช้การเปรียบเทียบการเริ่มต้นระบบจะวิเคราะห์การติดตามเพื่อค้นหาปัญหาที่พบได้ทั่วไป และพิมพ์ปัญหาเหล่านั้นหลังจากเมตริกไปยังเอาต์พุตการทดสอบของ Studio ในแท็บการเปรียบเทียบ เช่น

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

ฟีเจอร์นี้ยังอยู่ระหว่างการพัฒนา โดยจะมีการปรับปรุงเอกสารประกอบและความสามารถในการขยายตามมา แต่เรายินดีรับฟังความคิดเห็น

ฟีเจอร์ใหม่

  • เพิ่มพร็อพเพอร์ตี้ Gradle androidx.baselineprofile.suppressWarnings เพื่อระงับคำเตือนเกี่ยวกับโปรไฟล์พื้นฐานทั้งหมด (314153a)
  • ตอนนี้เมตริก Microbench จะแสดงในการติดตาม Perfetto เป็นตัวนับ (3214854)
  • เพิ่มสคริปต์ทดลองสำหรับการปิดใช้ JIT (ต้องรีสตาร์ทรูท / รันไทม์) และรีเซ็ตสถานะประสิทธิภาพ/การทดสอบของอุปกรณ์ ปัจจุบันงานเหล่านี้ไม่ได้เผยแพร่เป็นงาน Gradle (7c3732b)
  • เพิ่มอาร์กิวเมนต์การเปรียบเทียบเพื่อข้ามการทดสอบเมื่อเรียกใช้ในโปรแกรมจำลอง เมื่อเปิดใช้automaticGenerationDuringการสร้างแล้ว การเปรียบเทียบจะทริกเกอร์การสร้างโปรไฟล์พื้นฐานด้วย การดำเนินการนี้จะล้มเหลวหากใช้โปรแกรมจำลอง อาร์กิวเมนต์ใหม่ skipBenchmarksOnEmulator ช่วยให้เราข้ามการทดสอบแทนได้ (0c2ddcd)
  • เปลี่ยนตรรกะการเปิดใช้เหตุการณ์ประสิทธิภาพให้ทำงานใน API 23 ขึ้นไป (2550048)

การเปลี่ยนแปลง API

  • ย้ายอาร์กิวเมนต์ PerfettoConfig การทดสอบที่มีอยู่MacrobenchmarkRule.measureRepeated()ไปยังออบเจ็กต์ ExperimentalConfig ใหม่

แก้ไขข้อบกพร่อง

  • เพิ่มจำนวนการลองอีกครั้งของ lockClocks.sh (99e9dac)
  • อย่าสร้างประเภทบิลด์ nonMinified และการเปรียบเทียบหากมีอยู่แล้ว เนื่องจากข้อบกพร่อง แม้ว่าจะมีnonMinifiedและประเภทบิลด์การเปรียบเทียบอยู่แล้ว ระบบก็จะสร้างขึ้นใหม่ (e75f0a5)
  • ไม่สนใจสไลซ์ที่ไม่สิ้นสุดจากผลลัพธ์ TraceSectionMetric (a927d20)
  • ปรับปรุงการตรวจสอบโปรแกรมจำลองเพื่อพิจารณาคำนำหน้า sdk_ (1587de8)
  • ถือว่าแพ็กเกจที่ไม่ได้ทำงานถูกล้างใน FrameTimingGfxInfoMetric (35cc79c)
  • แก้ไข androidx.benchmark.cpuEventCounter ที่สร้างค่าที่เสียหายสำหรับเหตุการณ์ที่ไม่ใช่คำสั่ง (06edd59)
  • แก้ไข resumeTiming/runWithTimingDisabled เพื่อให้เป็นไปตามลำดับความสำคัญของเมตริก และลดผลกระทบของการหยุดชั่วคราว/กลับมาทำงานอีกครั้งของเมตริกที่มีลำดับความสำคัญต่ำกว่าต่อผลลัพธ์ของเมตริกที่มีลำดับความสำคัญสูงกว่าอย่างมาก เช่น หากใช้ตัวนับประสิทธิภาพ CPU ผ่านอาร์กิวเมนต์การวัด cpuEventCounter.enable ระบบจะไม่ลด timeNs ลงอย่างมากอีกต่อไปเมื่อเกิดการหยุดชั่วคราว/กลับมาทำงานอีกครั้ง (5de0968)

เวอร์ชัน 1.3

เวอร์ชัน 1.3.4

26 มีนาคม 2025

androidx.benchmark:benchmark-*:1.3.4 เปิดตัวแล้ว เวอร์ชัน 1.3.4 มีคอมมิตเหล่านี้

แก้ไขข้อบกพร่อง

  • แก้ไขความไม่เข้ากันของการแยกโปรเจ็กต์ Gradle ในปลั๊กอิน Gradle พื้นฐานของเกณฑ์เปรียบเทียบ (b/404523257)

เวอร์ชัน 1.3.3

16 ตุลาคม 2024

androidx.benchmark:benchmark-*:1.3.3 เปิดตัวแล้ว เวอร์ชัน 1.3.3 มีการคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไข CollectBaselineProfileTask เมื่ออุปกรณ์ AVD มีช่องว่าง (Ia0225, b/371642809)

เวอร์ชัน 1.3.2

2 ตุลาคม 2024

androidx.benchmark:benchmark-*:1.3.2 เปิดตัวแล้ว เวอร์ชัน 1.3.2 มีการเปลี่ยนแปลงเหล่านี้

แก้ไขข้อบกพร่อง

  • แก้ไข Firebase Test Lab (FTL) ที่ไม่สามารถดึงไฟล์ผลลัพธ์ของโปรไฟล์พื้นฐานหรือ Macrobenchmark จากปลั๊กอิน Gradle ของโปรไฟล์พื้นฐาน (I2f678, b/285187547)

หากต้องการใช้ FTL ให้ใช้ปลั๊กอินกับโมดูลโปรไฟล์พื้นฐานในบล็อกปลั๊กอิน โดยมีสิ่งต่อไปนี้

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

จากนั้นกำหนดค่า Firebase Test Lab ด้วยข้อมูลต่อไปนี้

  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}")
          }
      }
  }

นอกจากนี้ คุณยังต้องเพิ่มอุปกรณ์ FTL ที่สร้างขึ้นในส่วนขยายโปรไฟล์พื้นฐานด้วย

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

เวอร์ชัน 1.3.1

18 กันยายน 2024

androidx.benchmark:benchmark-*:1.3.1 เปิดตัวแล้ว เวอร์ชัน 1.3.1 มี คอมมิตเหล่านี้

แก้ไขข้อบกพร่อง

  • เพิ่มพร็อพเพอร์ตี้ gradle androidx.baselineprofile.suppressWarnings เพื่อระงับคำเตือนโปรไฟล์พื้นฐานทั้งหมด (I7c36e, b/349646646)
  • แก้ไขปลั๊กอิน Gradle ของโปรไฟล์พื้นฐานให้ใช้ nonMinified… และ benchmark… ที่มีอยู่แล้วหากแอปสร้างขึ้นแทนการสร้าง Wrapper (Ia8934, b/361370179)
  • แก้ไข java.lang.AssertionError: ERRORS (not suppressed): EMULATOR เมื่อเปิดใช้ automaticGenerationDuringBuild ในโปรแกรมจำลอง ระบบจะใช้อาร์กิวเมนต์ใหม่เพื่อข้ามการทดสอบแทน (If3f51, b/355515798)
  • การลดขนาด Microbenchmark - เก็บคลาสย่อยของ org.junit.runner.notification.RunListener ไว้ใน ProGuard ของไลบรารีการทดสอบประสิทธิภาพ (Ic8ed5, b/354264743)
  • แก้ไข TraceSectionMetric เพื่อไม่สนใจชิ้นที่ไม่ได้สิ้นสุด ก่อนหน้านี้ ระบบจะถือว่าเหตุการณ์เหล่านี้มีระยะเวลา -1 เช่น ในระหว่างการหาผลรวมหรือหาระยะเวลาต่ำสุด (If74b7)
  • แก้ไขปัญหาใน FrameTimingGfxInfoMetric ที่การเริ่มเมตริกจะขัดข้องหากกระบวนการยังไม่ทำงาน (I6e412)

เวอร์ชัน 1.3.0

21 สิงหาคม 2024

androidx.benchmark:benchmark-*:1.3.0 เปิดตัวแล้ว เวอร์ชัน 1.3.0 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง Microbenchmark ตั้งแต่เวอร์ชัน 1.2.0

  • การติดตามเมธอดจะเปิดอยู่โดยค่าเริ่มต้นในการเปรียบเทียบประสิทธิภาพระดับไมโครเมื่อทำงานในอุปกรณ์ส่วนใหญ่
    • การติดตามเมธอดจะทำงานเป็นเฟสแยกต่างหากหลังจากการวัด ซึ่งช่วยให้การวัดและร่องรอยเมธอดมีความแม่นยำและสามารถส่งออกจากรันการทดสอบประสิทธิภาพครั้งเดียวได้
    • ร่องรอยเมธอดในระบบปฏิบัติการ Android และ ART บางเวอร์ชันจะส่งผลต่อระยะการวัดในภายหลัง โดยในเวอร์ชันเหล่านี้ ร่องรอยเมธอดจะปิดอยู่โดยค่าเริ่มต้นและระบบจะพิมพ์คำเตือนไปยังเอาต์พุตของ Studio
  • การเปรียบเทียบเทรดหลักและ ANR
    • เพิ่ม measureRepeatedOnMainThread สำหรับการเปรียบเทียบเธรด UI (เช่น เธรดที่โต้ตอบกับ UI ของ Compose/View) เพื่อหลีกเลี่ยง ANR เมื่อทำงานเป็นเวลาหลายวินาที
    • ระบบจะข้ามร่องรอยเมธอดหากคาดว่าจะเกินกำหนดเวลาการหลีกเลี่ยง ANR ตั้งค่า androidx.benchmark.profiling.skipWhenDurationRisksAnr เป็น false เพื่อปิดใช้ลักษณะการทำงานนี้ (ไม่แนะนำสำหรับการเรียกใช้ CI เนื่องจาก ANR อาจทำให้เกิดปัญหาในการเรียกใช้ CI เป็นเวลานาน)
  • การลดขนาด
    • กฎ ProGuard แบบฝังเพื่อปรับปรุงการเปรียบเทียบประสิทธิภาพระดับไมโครโดยเปิดใช้การลดขนาด
    • การลดขนาด/R8 ในโมดูลไลบรารีต้องใช้ AGP 8.3 และเปิดใช้ได้ผ่าน android.buildTypes.release.androidTest.enableMinification ใน build.gradle
    • เพิ่ม API BlackHole.consume() เวอร์ชันทดลองเพื่อป้องกันการกำจัดโค้ดที่ไม่ได้ใช้ (If6812, b/286091643)
  • เมตริก
    • ฟีเจอร์ตัวนับเหตุการณ์ CPU เวอร์ชันทดลอง (เมตริกจาก perf_event_open ซึ่งต้องใช้รูทในแพลตฟอร์มส่วนใหญ่) เข้าถึงผ่าน InstrumentationArgument androidx.benchmark.cpuEventCounter.enable (ตั้งค่าเป็น true ได้) และตั้งค่า androidx.benchmark.cpuEventCounter.events ได้ เช่น เป็น (Instructions,CpuCycles) ฟีเจอร์นี้ควรได้รับการรองรับในโปรแกรมจำลอง userdebug บางโปรแกรม แต่ยังไม่มีการทดสอบการรองรับในโปรแกรมจำลองทั้งหมดที่มีอยู่

การเปลี่ยนแปลงใน MACRObenchmark ตั้งแต่เวอร์ชัน 1.2.0

  • การยกเครื่องการติดตามเมธอดสำหรับมาโครเบนช์มาร์ก
    • ตอนนี้ร่องรอยเมธอดจะกำหนดขอบเขตตามระยะเวลาของ measureBlock และสามารถบันทึกหลายเซสชันได้หากกระบวนการเริ่มต้นหลายครั้ง
    • ก่อนหน้านี้ ร่องรอยเมธอดจะใช้ได้กับเกณฑ์เปรียบเทียบ StartupMode.COLD เท่านั้น และจะไม่บันทึกข้อมูลใดๆ สำหรับ measureBlocks ที่ไม่ได้รีสตาร์ทกระบวนการเป้าหมาย
    • แก้ไขการล้างร่องรอยเมธอดใน Macrobenchmark เพื่อให้ระบบบันทึกร่องรอยเมธอดได้อย่างครบถ้วนและถูกต้อง แม้ในอุปกรณ์ที่ช้ากว่า (I6349a, b/329904950)
  • ดัมป์โปรไฟล์ ART อย่างถูกต้องระหว่างการทำซ้ำ warmUp ครั้งเมื่อกระบวนการถูกหยุด เพื่อให้การวัด CompilationMode.Partial(warmup=N) แม่นยำยิ่งขึ้น (I17923)
  • ข้อความแสดงข้อผิดพลาดในการออกอากาศของ Shader แบบ Drop
    • Added debugging suggestions to drop shader broadcast failure message
    • เพิ่มอาร์กิวเมนต์การวัด 2 รายการเพื่อลบล้างลักษณะการทิ้งตัวปรับเฉดสีเพื่อแก้ปัญหาข้อขัดข้องเมื่อเปรียบเทียบแอปโดยไม่มี ProfileInstaller 1.3:
      • androidx.benchmark.dropShaders.enable=true/false : ใช้เพื่อข้ามการทิ้งตัวปรับเฉดสีทั้งหมด (รวมถึงการทิ้งตัวปรับเฉดสีที่ทำในการเปิด StartupMode.Cold) โดยเฉพาะเมื่อทำการเปรียบเทียบแอปที่ยังไม่ได้ใช้ profileinstaller 1.3
      • androidx.benchmark.dropShaders.throwOnFailure=true/false : สามารถใช้เพื่อยอมรับความล้มเหลวเมื่อพยายามทิ้งเชเดอร์ เช่น เมื่อแอปทดสอบประสิทธิภาพที่ไม่มี ProfileInstaller 1.3 (I4f573)
  • เพิ่มตัวแปร MacrobenchmarkRule#measureRepeated เวอร์ชันทดลองซึ่งใช้ PerfettoConfig ที่กำหนดเองสำหรับการบันทึกการติดตาม Perfetto ที่ปรับแต่งอย่างเต็มรูปแบบ โปรดทราบว่าการกำหนดค่าที่ไม่ถูกต้องอาจทำให้คลาสเมตริกในตัวล้มเหลว (Idfd3d, b/309841164, b/304038384)
  • ยกเลิกงาน dexopt ในเบื้องหลังก่อนเรียกใช้ Macrobenchmark เพื่อลดการรบกวน (I989ed)
  • ตอนนี้ Macrobenchmark จะรอ 1 วินาทีเพื่อให้แอปพลิเคชันเป้าหมายล้างโปรไฟล์ ART (ก่อนหน้านี้จะรอ 500 มิลลิวินาที) (I85a50, b/316082056)
  • การยกเครื่อง TraceSectionMetric
    • หมายเหตุ: การเปลี่ยนแปลง TraceSectionMetric ด้านล่างอาจส่งผลต่อเอาต์พุตในการใช้งาน CI และอาจทำให้เกิดความไม่ต่อเนื่องหรือการแยกวิเคราะห์ล้มเหลว
    • ตอนนี้ระบบจะใช้ผลรวมเป็นค่าเริ่มต้น เนื่องจากการใช้เมตริกนี้ส่วนใหญ่เป็นกิจกรรมที่เกิดซ้ำ และระบบจะทิ้งข้อมูลแรกในกรณีเหล่านี้
    • เปลี่ยนให้ปรับแต่งได้มากขึ้น พร้อมโหมดที่พร้อมใช้งานมากขึ้น
    • ตอนนี้ชื่อโหมดจะฝังอยู่ในชื่อเอาต์พุตเมตริก (ใน Studio และ JSON)
    • ตอนนี้รองรับ Slice ที่สร้างโดยใช้ Trace.{begin|end}AsyncSection แล้ว
  • เมตริก
    • Power - เพิ่ม PowerMetric.deviceSupportsHighPrecisionTracking, PowerMetric.deviceBatteryHasMinimumCharge() และ PowerMetric.deviceSupportsPowerEnergy() แล้ว
    • เปลี่ยนชื่อ Metric.getResult เป็น getMeasurements ให้ตรงกับประเภทการแสดงผล
    • เพิ่มป้ายกำกับ log.w / exception ในการตรวจหาการเริ่มต้นทั้งหมดที่ล้มเหลว การดำเนินการนี้ไม่ได้เปลี่ยนแปลงลักษณะการทำงานปัจจุบัน (ดังนั้นข้อผิดพลาดบางอย่างจะเกิดขึ้น และข้อผิดพลาดอื่นๆ จะตรวจไม่พบการเริ่มต้นโดยไม่มีการแจ้งเตือน) แต่จะทำให้เข้าใจได้ง่ายขึ้น โดยทั่วไปแล้ว แอปที่Log.w()และไม่สามารถรายงานเมตริกการเริ่มต้นระบบคือแอปที่ไม่มีเหตุการณ์ที่ไม่ใช่เฟรม โดยจะมีการส่งข้อยกเว้นเมื่อตรวจพบการเริ่มต้นระบบ ยกเว้นข้อมูลเวลาที่ใช้ในการแสดงผลเฟรม (จาก Slice ของ UI/RT) (Id240f, b/329145809)
    • เพิ่มการวัด frameCount ลงใน FrameTimingMetric เพื่อช่วยในการค้นหาสถานการณ์ที่การวัดเปลี่ยนแปลงเนื่องจากจำนวนเฟรมที่สร้างขึ้นมีการเปลี่ยนแปลง (เพิ่มภาพเคลื่อนไหวใหม่ แก้ไขปัญหาการทำให้เป็นโมฆะ) (I1e5aa)
    • ชี้แจงว่า frameOverrunMs เป็นเมตริกที่แนะนำสำหรับการติดตามเมื่อมีในเอกสาร และเหตุผล (I18749, b/329478323)
    • แก้ไขปัญหาที่เฟรมที่ไม่ได้สิ้นสุดที่จุดเริ่มต้นและจุดสิ้นสุดของการติดตามอาจจับคู่กัน ซึ่งจะรายงานเป็นเฟรมเดียวที่ยาวมากอย่างไม่ถูกต้อง (I39353, b/322232828)
    • ปรับปรุงข้อผิดพลาด FrameTimingMetric เมื่อไม่มีการสร้างเฟรม และแสดงลิงก์ไปยังการติดตามเสมอเมื่อแยกวิเคราะห์เมตริกไม่สำเร็จเพื่อช่วยในการวิเคราะห์ปัญหา (I956b9)
    • แก้ไขข้อขัดข้องใน FrameTimingMetric ที่แยกวิเคราะห์รหัสเฟรมไม่สำเร็จ โดยเฉพาะในอุปกรณ์ OEM บางรุ่น (Ia24bc, b/303823815, b/306235276)
    • ลดความเข้มงวดของการตรวจสอบใน FrameMetrics และเพิ่มรายละเอียดเพิ่มเติมในข้อความแสดงข้อผิดพลาด (Iadede)

การจับภาพโปรไฟล์พื้นฐาน / การเปลี่ยนแปลงปลั๊กอิน Gradle ตั้งแต่เวอร์ชัน 1.2.0

  • เพิ่มเวอร์ชันสูงสุดที่แนะนําของ AGP เป็น 9.0.0-alpha01
  • ตรวจสอบว่างาน mergeArtProfile และ mergeStartupProfile รอการสร้างโปรไฟล์พื้นฐานเสมอ (I623d6, b/343086054)
  • การสร้างโปรไฟล์พื้นฐานสำเร็จจะแสดงสรุปสิ่งที่เปลี่ยนแปลง (I824c8, b/269484510)
  • เพิ่ม DSL เพื่อปิดใช้คำเตือน (Ic4deb, b/331237001)
  • แก้ไขเพื่อให้การเปรียบเทียบใช้โปรไฟล์พื้นฐานที่สร้างขึ้นเมื่อปิด automaticGenerationDuringBuild (Ic144f, b/333024280)
  • แก้ไขBaselineProfileการลบล้างพร็อพเพอร์ตี้ปลั๊กอิน Gradle เพื่อเปิดใช้การสร้างโปรไฟล์พื้นฐานและการเปรียบเทียบเมื่อปรับแต่งประเภทบิลด์ nonMinified หรือการเปรียบเทียบ (Ib8f05, b/324837887)
  • แก้ไขการรวมโปรไฟล์พื้นฐานของไลบรารีใน AAR ก่อน AGP 8.3.0-alpha15 (I1d2af, b/313992099)
  • แก้ไข URL เอาต์พุตของโปรไฟล์พื้นฐานและโปรไฟล์เริ่มต้นที่ส่วนท้ายของงานการสร้าง (I802e5, b/313976958)

การเปลี่ยนแปลงที่สำคัญอื่นๆ ตั้งแต่เวอร์ชัน 1.2.0

  • การบันทึกการติดตาม
    • ลดข้อผิดพลาด EXITCODE 2 เมื่อเริ่ม Perfetto จากข้อผิดพลาดเป็นคำเตือนที่บันทึกไว้
    • เปิดใช้การติดตาม AIDL โดยค่าเริ่มต้นในเกณฑ์เปรียบเทียบ(ต้องใช้ API 28) (Ia0af2, b/341852305)
    • เปิดใช้การติดตามแท็ก Porter โดยค่าเริ่มต้นในการเปรียบเทียบ ซึ่งจะบันทึกข้อมูล เช่น จุดติดตาม Wakelock (Icfe44, b/286551983)
    • เพิ่มระยะหมดเวลาในการเริ่มจับภาพการติดตามเพื่อหลีกเลี่ยงการขัดข้องเมื่อเริ่มการติดตามในอุปกรณ์ที่ช้าลง (I98841, b/329145808)
    • เพิ่ม API สาธารณะ PerfettoTraceProcessor.Session.queryMetrics API ที่มีรูปแบบ JSON, textproto และไบนารี proto (ไม่ได้ถอดรหัส) ซึ่งจะช่วยให้คุณค้นหาเมตริกที่สร้างไว้ใน TraceProcessor ได้ (I54d7f, b/304038382)
    • เปิดใช้การบล็อกการเริ่มต้นในบันทึกการติดตาม Perfetto เพื่อลดความเสี่ยงที่ข้อมูลจะขาดหายไปที่จุดเริ่มต้นของการติดตาม รองรับเฉพาะใน API 33 ขึ้นไป (Ie6e41, b/310760059)
  • เอาต์พุต JSON
    • เพิ่มข้อมูลเพิ่มเติมในบริบทการเปรียบเทียบในเอาต์พุต JSON ดังนี้
      • context.artMainlineVersion - เวอร์ชันจำนวนเต็มของโมดูลหลักของ Art (หากมีในอุปกรณ์ ไม่เช่นนั้นจะเป็น -1)
      • context.build.id - เท่ากับ android.os.Build.ID
      • context.build.version.codename - เท่ากับ android.os.Build.VERSION.CODENAME
      • context.build.version.abbreviatedCodename - สอดคล้องกับตัวอักษรตัวแรกของชื่อเวอร์ชันรุ่นทดลอง (รวมถึงในบิลด์ที่เผยแพร่) (Ie5020)
    • เพิ่มรายการ profilerOutput ลงในเอาต์พุต JSON เพื่อให้ใช้เครื่องมือต่างๆ เกี่ยวกับร่องรอยการทำโปรไฟล์ได้ง่ายขึ้น (เช่น Perfetto, ร่องรอยของเมธอด) (I05ddd, b/332604449)
    • เพิ่มคำเตือนเมื่อใช้ Android Test Orchestrator ในโมดูลการเปรียบเทียบ เนื่องจากจะทำให้ไฟล์ JSON เอาต์พุตต่อโมดูลถูกเขียนทับซ้ำๆ (Ia1af6, b/286899049)
    • ส่งข้อยกเว้นเมื่อชื่อไฟล์ยาวกว่า 200 อักขระเพื่อหลีกเลี่ยงข้อขัดข้องที่ไม่ชัดเจนเมื่อเขียนหรือประมวลผลไฟล์หลังการประมวลผล (I4a5ab)

เวอร์ชัน 1.3.0-rc01

7 สิงหาคม 2024

androidx.benchmark:benchmark-*:1.3.0-rc01 เปิดตัวแล้ว เวอร์ชัน 1.3.0-rc01 มีการเปลี่ยนแปลงเหล่านี้

แก้ไขข้อบกพร่อง

  • แก้ไข androidx.benchmark.cpuEventCounter ที่สร้างค่าที่เสียหายสำหรับเหตุการณ์ที่ไม่ใช่คำสั่ง (I7386a, b/286306579)
  • แก้ไข resumeTiming/runWithTimingDisabled เพื่อให้เป็นไปตามลำดับความสำคัญของเมตริก และลดผลกระทบของการหยุดชั่วคราว/กลับมาทำงานต่อของเมตริกที่มีลำดับความสำคัญต่ำต่อผลลัพธ์ของเมตริกที่มีลำดับความสำคัญสูงกว่าอย่างมาก เช่น หากใช้ตัวนับประสิทธิภาพ CPU ผ่านอาร์กิวเมนต์การวัด cpuEventCounter.enable ระบบจะไม่ลด timeNs ลงอย่างมากอีกต่อไปเมื่อเกิดการหยุดชั่วคราว/กลับมาทำงานอีกครั้ง (I39c2e, b/286306579, b/307445225)
  • ลดโอกาสที่การสุ่มตัวอย่างสแต็กจะทำให้ measureRepeatedOnMainThread หมดเวลาการทำงานของเทรดหลักโดยการย้าย Conversion การสุ่มตัวอย่างสแต็กออกจากเทรดหลัก (I487a8, b/342237318)
  • นำการระบุการเข้าถึง API ของแพลตฟอร์มใหม่ด้วยตนเองออก เนื่องจากระบบจะดำเนินการนี้โดยอัตโนมัติผ่านการสร้างโมเดล API เมื่อใช้ R8 กับ AGP 7.3 ขึ้นไป (เช่น R8 เวอร์ชัน 3.3) และสำหรับการสร้างทั้งหมดเมื่อใช้ AGP 8.1 ขึ้นไป (เช่น D8 เวอร์ชัน 8.1) เราขอแนะนำให้ลูกค้าที่ไม่ได้ใช้ AGP อัปเดตเป็น D8 เวอร์ชัน 8.1 ขึ้นไป ดูบทความนี้สำหรับรายละเอียดเพิ่มเติม (I9496c, b/345472586)
  • เพิ่มการตรวจสอบเวอร์ชัน AGP เพื่อส่งชื่อแพ็กเกจเป็นอาร์กิวเมนต์ของเครื่องมือ ก่อน AGP 8.4.0 จะส่งชื่อแพ็กเกจแอปเป้าหมายไปยังแอปการวัดคุมผ่านอาร์กิวเมนต์การวัดคุมไม่ได้ (0c72a3f)

เวอร์ชัน 1.3.0-beta02

10 กรกฎาคม 2024

androidx.benchmark:benchmark-*:1.3.0-beta02 เปิดตัวแล้ว เวอร์ชัน 1.3.0-beta02 มีคอมมิตเหล่านี้

แก้ไขข้อบกพร่อง

  • จัดการ EXITCODE 2 อย่างเหมาะสมเมื่อเริ่ม Perfetto เพื่อบันทึกคำเตือน แต่ดำเนินการต่อ

เวอร์ชัน 1.3.0-beta01

12 มิถุนายน 2024

androidx.benchmark:benchmark-*:1.3.0-beta01 เปิดตัวแล้ว เวอร์ชัน 1.3.0-beta01 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เปลี่ยนชื่อ MethodTracing.affectsMeasurementOnThisDevice เป็น AFFECTS_MEASUREMENT_ON_THIS_DEVICE เพื่อความสอดคล้อง (I1bdfa)
  • เพิ่ม API BlackHole.consume() เวอร์ชันทดลองเพื่อป้องกันการกำจัดโค้ดที่ไม่ได้ใช้ใน Microbenchmark (If6812, b/286091643)
  • ตอนนี้ Microbenchmark จะแสดงข้อผิดพลาดอย่างถูกต้องเพื่อป้องกันไม่ให้ร่องรอยเมธอดรบกวนการวัดผล ปัญหานี้เกิดขึ้นในอุปกรณ์บางเครื่องเมื่อมีการบังคับใช้ร่องรอยเมธอด (ผ่านอาร์กิวเมนต์การวัดคุมหรือ MicrobenchmarkConfig) และหากมีการพยายามวัดค่าหลังจากการร่องรอยเมธอด อุปกรณ์ที่ได้รับผลกระทบใช้ API 26-30 หรือ ART mainline module บางเวอร์ชันที่ได้รับผลกระทบจากการรบกวนนี้ และตรวจหาได้ที่รันไทม์ผ่าน ProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice (Iafb92, b/303660864)

การแก้ไขข้อบกพร่อง

  • เพิ่มเวอร์ชัน AGP สูงสุดที่แนะนำเป็น 9.0.0-alpha01 (I5bbb0)
  • เพิ่มโหมดการคอมไพล์ลงในบริบทการเปรียบเทียบ (If5612, b/325512900)
  • เปิดใช้การติดตาม AIDL โดยค่าเริ่มต้น (ต้องใช้ API 28) (Ia0af2, b/341852305)
  • เพิ่มข้อมูลเพิ่มเติมในบริบทการเปรียบเทียบในเอาต์พุต JSON ดังนี้
    • context.artMainlineVersion - เวอร์ชันจำนวนเต็มของโมดูลหลักของ Art (หากมีในอุปกรณ์ ไม่เช่นนั้นจะเป็น -1)
    • context.build.id - เท่ากับ android.os.Build.ID
    • context.build.version.codename - เท่ากับ android.os.Build.VERSION.CODENAME
    • context.build.version.abbreviatedCodename - สอดคล้องกับตัวอักษรตัวแรกของชื่อเวอร์ชันรุ่นทดลอง (แม้ในบิลด์ที่เผยแพร่) (Ie5020)
  • แก้ไข StackSampling เพื่อให้เป็นไปตาม androidx.benchmark.profiling.sampleDurationSeconds (Ib1d53)
  • เปลี่ยนทรัพยากร Dependency ทั่วไปของมาโครเป็น api() เพื่อให้ใช้งานได้ง่ายขึ้น เช่น PerfettoTrace และ PerfettoConfig (Icdae3, b/341851833)
  • ตรวจสอบว่างาน mergeArtProfile และ mergeStartupProfile รอการสร้างโปรไฟล์พื้นฐานเสมอ (I623d6, b/343086054)
  • พิจารณาสถานะการเปิดใช้ตัวแปรเมื่อตัดสินใจว่าจะเปิดใช้ตัวแปรหรือไม่ (I5d19e, b/343249144)
  • เพิ่มระยะหมดเวลาเริ่มต้นสำหรับตัวประมวลผลการติดตาม Perfetto (I87e8c, b/329145808)

เวอร์ชัน 1.3.0-alpha05

14 พฤษภาคม 2024

androidx.benchmark:benchmark-*:1.3.0-alpha05 เปิดตัวแล้ว เวอร์ชัน 1.3.0-alpha05 มีคอมมิตเหล่านี้

แก้ไขข้อบกพร่อง

  • แสดงข้อยกเว้นที่ชัดเจนขึ้นเมื่อเมตริก Macrobench แสดงค่าเป็น 0 สำหรับการทำซ้ำทั้งหมด (Iab58f, b/314931695)
  • เพิ่มกฎการแก้ปัญหาเพิ่มเติมลงในกฎ ProGuard ของ Microbench ซึ่งรวมถึงการรองรับกฎ Listener และคำเตือน / ข้อผิดพลาดอื่นๆ ที่พบ (I14d8f, b/329126308, b/339085669)
  • ร่องรอยเมธอดจะทํางานเป็นเฟสแยกต่างหากในระหว่างการทดสอบ Macrobenchmark และจะไม่ส่งผลต่อการวัดอีกต่อไป (If9a50, b/285912360, b/336588271)
  • เพิ่มคำแนะนำในการแก้ไขข้อบกพร่องเพิ่มเติมเพื่อทิ้งข้อความแสดงข้อผิดพลาดในการออกอากาศของตัวปรับเฉดสี (I5efa6, b/325502725)

เวอร์ชัน 1.3.0-alpha04

1 พฤษภาคม 2024

androidx.benchmark:benchmark-*:1.3.0-alpha04 เปิดตัวแล้ว เวอร์ชัน 1.3.0-alpha04 มีการเปลี่ยนแปลงเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่มตัวแปร MacrobenchmarkRule#measureRepeated เวอร์ชันทดลองซึ่งใช้ PerfettoConfig ที่กำหนดเองสำหรับการบันทึกการติดตาม Perfetto ที่ปรับแต่งอย่างเต็มรูปแบบ โปรดทราบว่าการกำหนดค่าที่ไม่ถูกต้องอาจทำให้คลาสเมตริกในตัวล้มเหลว (Idfd3d, b/309841164, b/304038384)
  • เปลี่ยนชื่อ PowerMetric.deviceSupportsPowerEnergy เป็น PowerMetric.deviceSupportsHighPrecisionTracking เพื่อความชัดเจน (I5b82f)
  • เพิ่ม PowerMetric.deviceBatteryHasMinimumCharge() และ PowerMetric.deviceSupportsPowerEnergy() เพื่อเปิดใช้การเปลี่ยนหรือข้ามการเปรียบเทียบตามความสามารถในการวัดพลังงานของอุปกรณ์ (I6a591, b/322121218)

การแก้ไขข้อบกพร่อง

  • เพิ่มการเปรียบเทียบกับโปรไฟล์พื้นฐานก่อนหน้า (I824c8, b/269484510)
  • เพิ่ม DSL เพื่อปิดใช้คำเตือน (Ic4deb, b/331237001)
  • เปลี่ยนข้อยกเว้นเป็นบันทึกข้อมูลเมื่อปิดใช้ตัวแปรการเปรียบเทียบ (I8a517, b/332772491)
  • ทำให้การบันทึกการติดตามเมธอดสำหรับ Macrobenchmark ง่ายขึ้นโดยกำหนดขอบเขตตามระยะเวลาของ measureBlock() จริง ก่อนหน้านี้ การติดตามจะเริ่มเมื่อเปิดใช้งานกระบวนการเป้าหมายและรองรับเฉพาะ Cold Start (Iee85a, b/300651094)
  • หลีกเลี่ยงการขัดข้องเมื่อ Perfetto Trace Processor เริ่มทำงานช้า (I98841, b/329145808)

เวอร์ชัน 1.3.0-alpha03

17 เมษายน 2024

androidx.benchmark:benchmark-*:1.3.0-alpha03 เปิดตัวแล้ว เวอร์ชัน 1.3.0-alpha03 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่ม API สาธารณะ PerfettoTraceProcessor.Session.queryMetrics API ที่มีตัวแปร JSON, textproto และ proto binary (ไม่ได้ถอดรหัส) ซึ่งช่วยให้คุณค้นหาเมตริกที่สร้างไว้ใน TraceProcessor ได้ (I54d7f, b/304038382)
  • เพิ่ม profilerOutput ลงในเอาต์พุต JSON เพื่อให้ใช้เครื่องมือเกี่ยวกับการติดตามการทำโปรไฟล์ได้ง่ายขึ้น (เช่น perfetto, ร่องรอยเมธอด) (I05ddd, b/332604449)
  • เพิ่มแท็กพลังงานลงในการกำหนดค่า Perfetto ของการเปรียบเทียบ ซึ่งจะบันทึกข้อมูล เช่น จุดติดตาม Wakelock (Icfe44, b/286551983)
  • เพิ่มอาร์กิวเมนต์ inst androidx.benchmark.profiling.skipWhenDurationRisksAnr ซึ่งตั้งค่าเป็นเท็จได้เพื่อหลีกเลี่ยงการข้ามร่องรอยเมธอดเมื่อระยะเวลาที่คาดไว้อาจทำให้เกิด ANR - ขอแนะนำอย่างยิ่งให้หลีกเลี่ยงในการเรียกใช้ CI
  • เพิ่มอาร์กิวเมนต์ inst เวอร์ชันทดลอง androidx.benchmark.profiling.perfCompare.enable โดยตั้งค่านี้เป็น "จริง" เพื่อเรียกใช้การเปรียบเทียบเวลาระหว่างระยะการวัดและการทำโปรไฟล์ มีประโยชน์ เช่น ในการประเมินค่าใช้จ่ายของร่องรอยเมธอด (I61fb4, b/329146942)

การเปลี่ยนแปลง API

  • เปลี่ยน TraceSectionMetric.Mode เป็น sealed class เพื่อให้ขยายได้ในอนาคตโดยไม่ทำให้ exhaustive when statements (I71f7b) เสีย
  • เพิ่ม TraceSectionMetric.Mode.Average และ .Count และจัดเรียงอาร์กิวเมนต์ใหม่เพื่อให้อาร์กิวเมนต์ที่พบบ่อย (โหมด) อยู่ก่อนหน้าในรายการอาร์กิวเมนต์ ซึ่งช่วยลดความจำเป็นในการระบุชื่อพารามิเตอร์ (Ibf0b0, b/315830077, b/322167531)
  • เปลี่ยนชื่อ Metric.getResult เป็น getMeasurements เพื่อให้ตรงกับประเภทการแสดงผล (I42595)

การแก้ไขข้อบกพร่อง

  • แก้ไขเพื่อให้การเปรียบเทียบใช้โปรไฟล์พื้นฐานที่สร้างขึ้นเมื่อปิด automaticGenerationDuringBuild (Ic144f, b/333024280)
  • แก้ไขการลบล้างพร็อพเพอร์ตี้ปลั๊กอิน Gradle BaselineProfile เพื่อเปิดใช้การสร้างโปรไฟล์พื้นฐานและการเปรียบเทียบเมื่อปรับแต่งประเภทบิลด์ nonMinified หรือการเปรียบเทียบ (Ib8f05, b/324837887)
  • แก้ไขการล้างร่องรอยเมธอดใน Macrobenchmark เพื่อให้ระบบบันทึกร่องรอยเมธอดได้อย่างครบถ้วนและถูกต้อง แม้ในอุปกรณ์ที่ช้ากว่า (I6349a, b/329904950)
  • เปิดใช้การบล็อกเริ่มต้นในบันทึกการติดตาม Perfetto เพื่อลดความเสี่ยงที่ข้อมูลจะขาดหายไปในช่วงต้นของการติดตาม รองรับเฉพาะใน API 33 ขึ้นไป (Ie6e41, b/310760059)
  • เพิ่มคำเตือนเมื่อใช้ Android Test Orchestrator ในโมดูลการเปรียบเทียบ เนื่องจากจะทำให้ไฟล์ JSON เอาต์พุตต่อโมดูลถูกเขียนทับซ้ำๆ (Ia1af6, b/286899049)
  • บังคับใช้ตัวคั่นหลักพันเป็น "," (คอมมา) เพื่อให้เอาต์พุตใน Studio สอดคล้องกัน โดยไม่สนใจภาษาของอุปกรณ์ (I3e921, b/313496656)
  • ตอนนี้ TraceSectionMetric รองรับ Slice ที่สร้างโดยใช้ Trace.{begin|end}AsyncSection แล้ว (I91b32, b/300434906)
  • เพิ่มป้ายกำกับ log.w / ข้อยกเว้นให้กับความล้มเหลวในการตรวจหาการเริ่มต้นระบบทั้งหมด การดำเนินการนี้ไม่ได้เปลี่ยนลักษณะการทำงานปัจจุบัน (ดังนั้นข้อผิดพลาดบางอย่างจึงแสดงขึ้น และข้อผิดพลาดอื่นๆ ไม่สามารถตรวจจับการเริ่มต้นทำงานได้โดยไม่มีการแจ้งเตือน) แต่ทำให้เข้าใจได้ง่ายขึ้นเท่านั้น โดยทั่วไปแล้ว Log.w()ที่ไม่สามารถรายงานเมตริกการเริ่มต้นคือเมตริกที่ไม่มีเหตุการณ์ที่ไม่ใช่เฟรม ระบบจะส่งข้อยกเว้นเมื่อตรวจพบการเริ่มต้น ยกเว้นข้อมูลเวลาที่ใช้ในการแสดงผลเฟรม (จากชิ้นส่วน UI/RT) (Id240f, b/329145809)
  • ยกเลิกงาน dexopt ในเบื้องหลังก่อนเรียกใช้ Macrobenchmark เพื่อลดการรบกวน (I989ed)
  • เพิ่มการวัดผล frameCount ลงใน FrameTimingMetric เพื่อช่วยในการค้นหาสถานการณ์ที่การวัดผลเปลี่ยนแปลงเนื่องจากจำนวนเฟรมที่สร้างขึ้นเปลี่ยนแปลง (เพิ่มภาพเคลื่อนไหวใหม่ แก้ไขปัญหาการลบล้าง) (I1e5aa)
  • ชี้แจงว่า frameOverrunMs เป็นเมตริกที่แนะนำสำหรับการติดตามเมื่อมีอยู่ในเอกสาร และเหตุผล (I18749, b/329478323)

เวอร์ชัน 1.3.0-alpha02

20 มีนาคม 2024

androidx.benchmark:benchmark-*:1.3.0-alpha02 เปิดตัวแล้ว เวอร์ชัน 1.3.0-alpha02 มีการเปลี่ยนแปลงเหล่านี้

ฟีเจอร์ใหม่

  • การรองรับ R8 เวอร์ชันทดลองใน Microbench ผ่านกฎ Proguard แบบฝัง โปรดทราบว่าการรองรับนี้ยังอยู่ในการทดสอบ และต้องใช้ AGP 8.3 สำหรับการลดขนาดการทดสอบโมดูลไลบรารี ใช้โค้ดต่อไปนี้เพื่อเปิดใช้การลดขนาด/การเพิ่มประสิทธิภาพ R8 ใน build.gradle ของโมดูลการเปรียบเทียบ ซึ่งจะช่วยเพิ่มประสิทธิภาพได้อย่างมาก ทั้งนี้ขึ้นอยู่กับภาระงาน (I738a3, b/184378053)

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

แก้ไขข้อบกพร่อง

  • แก้ไขคำเตือนการติดตามเมธอดให้อยู่คนละบรรทัดกับเอาต์พุต Microbench (I0455c, b/328308833)

เวอร์ชัน 1.3.0-alpha01

21 กุมภาพันธ์ 2024

androidx.benchmark:benchmark-*:1.3.0-alpha01 เปิดตัวแล้ว เวอร์ชัน 1.3.0-alpha01 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เปลี่ยนชื่อพารามิเตอร์บูลีน MicrobenchmarkConfig รายการเพื่อหลีกเลี่ยงคำว่า "ควร" ที่ไม่จำเป็น (Ia8f00, b/303387299)
  • เพิ่ม BenchmarkRule.measureRepeatedOnMainThread เพื่อให้การทดสอบประสิทธิภาพของเทรดหลัก (เช่น การทดสอบที่แตะ View หรือ UI ของ Compose) หลีกเลี่ยงการทริกเกอร์ ANR ได้ โดยเฉพาะอย่างยิ่งในระหว่างการทดสอบชุดใหญ่ใน CI (I5c86d)
  • เพิ่ม FrameTimingGfxInfoMetric ซึ่งเป็นการใช้งาน FrameTimingMetric ทางเลือกแบบทดลองที่มีการวัดผลโดยตรงจากแพลตฟอร์ม แทนที่จะดึงข้อมูลจากการติดตาม Perfetto (I457cb, b/322232828)
  • เพิ่มความสามารถในการดัมพ์โปรไฟล์ ART ระหว่างการทำซ้ำ warmUp แต่ละครั้ง (I17923)
  • การเปลี่ยนแปลงหลายอย่างใน TraceSectionMetric API มีดังนี้
    • เพิ่ม Mode.Min, Mode.Max
    • เพิ่มอาร์กิวเมนต์ป้ายกำกับเพื่อลบล้างชื่อส่วนเป็นป้ายกำกับเมตริก
    • เพิ่มชื่อโหมดลงในเอาต์พุตเพื่อชี้แจงความหมายของเมตริก
    • เปลี่ยนค่าเริ่มต้นเป็นผลรวม เนื่องจากการใช้งานเมตริกนี้ส่วนใหญ่เป็นกิจกรรมที่เกิดซ้ำ โปรดระวังการเปลี่ยนแปลงนี้ในการใช้งาน CI เนื่องจากอาจทำให้เกิดความไม่ต่อเนื่องหรือทำให้การแยกวิเคราะห์เสียหาย (Ic1e82, b/301892382, b/301955938)

แก้ไขข้อบกพร่อง

  • ปรับปรุงข้อความแสดงข้อผิดพลาดในปลั๊กอิน Gradle ของโปรไฟล์พื้นฐานเมื่อไม่มีอุปกรณ์ที่มีการจัดการที่ระบุ (Idea2b, b/313803289)
  • แก้ไขการรวมโปรไฟล์พื้นฐานของไลบรารีใน AAR ก่อน AGP 8.3.0-alpha15 (I1d2af, b/313992099)
  • แก้ไข URL เอาต์พุตของโปรไฟล์พื้นฐานและโปรไฟล์การเริ่มต้นเมื่อสิ้นสุดงานการสร้าง (I802e5, b/313976958)
  • ปรับระยะหมดเวลาของแหล่งข้อมูลเพื่อพยายามแก้ไข java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)] (I8dc7d, b/323601788)
  • เพิ่มอาร์กิวเมนต์การวัด 2 รายการเพื่อลบล้างลักษณะการทิ้งตัวปรับเฉดสีเพื่อแก้ปัญหาข้อขัดข้องเมื่อเปรียบเทียบแอปโดยไม่มี ProfileInstaller 1.3:
    • androidx.benchmark.dropShaders.enable=true/false : ใช้เพื่อข้ามการทิ้งตัวปรับเฉดสีทั้งหมด (รวมถึงการทิ้งตัวปรับเฉดสีที่ทำในการเปิด StartupMode.Cold) โดยเฉพาะเมื่อทำการเปรียบเทียบแอปที่ยังไม่ได้ใช้ profileinstaller 1.3
    • androidx.benchmark.dropShaders.throwOnFailure=true/false : สามารถใช้เพื่อยอมรับความล้มเหลวเมื่อพยายามทิ้งเฉดสี เช่น เมื่อทำการเปรียบเทียบแอปโดยไม่มี profileinstaller 1.3 (I4f573)
  • ข้ามร่องรอยเมธอดในเธรด UI เมื่อคาดว่าจะใช้เวลานานกว่า 2-3 วินาที และล้างร่องรอยเมธอดเมื่อส่งข้อผิดพลาด (I6e768)
  • แสดงข้อผิดพลาดเมื่อชื่อไฟล์ยาวกว่า 200 อักขระเพื่อหลีกเลี่ยงการขัดข้องที่ไม่ชัดเจนเมื่อเขียนหรือประมวลผลไฟล์ภายหลัง (I4a5ab)
  • แก้ไขปัญหาที่เฟรมที่ไม่มีการสิ้นสุดที่จุดเริ่มต้นและจุดสิ้นสุดของการติดตามสามารถจับคู่กันได้ ซึ่งจะรายงานอย่างไม่ถูกต้องว่าเป็นเฟรมเดียวที่ยาวมาก (I39353, b/322232828)
  • ใช้ --skip verification ใน API 30 ขึ้นไปเมื่อติดตั้งแพ็กเกจใน API 30-33 อีกครั้งเพื่อล้างโปรไฟล์ ART ในบิลด์ของผู้ใช้ ซึ่งจะช่วยข้ามคำเตือนของ Play Protect ที่ทำให้เกิดความล้มเหลวในอุปกรณ์บางประเภท (Ic9e36)
  • ใช้ am force-stop เพื่อปิดแอปเมื่อไม่ใช่แอประบบ เช่น UI ของระบบหรือ Launcher (I5e028)
  • ตอนนี้ Macrobenchmark จะรอ 1 second เพื่อให้แอปพลิเคชันเป้าหมายล้างโปรไฟล์ ART (ก่อนหน้านี้รอ 500 ms) (I85a50, b/316082056)
  • ปรับปรุงข้อผิดพลาด FrameTimingMetric เมื่อไม่ได้สร้างเฟรม และแสดงลิงก์ไปยังการติดตามเสมอเมื่อแยกวิเคราะห์เมตริกไม่สำเร็จเพื่อช่วยในการวินิจฉัยปัญหา (I956b9)
  • แก้ไขข้อขัดข้องใน FrameTimingMetric ที่แยกวิเคราะห์รหัสเฟรมไม่สำเร็จ โดยเฉพาะในอุปกรณ์ OEM บางรุ่น (Ia24bc, b/303823815, b/306235276)
  • ลดความเข้มงวดในการตรวจสอบใน FrameMetrics และเพิ่มรายละเอียดเพิ่มเติมในข้อความแสดงข้อผิดพลาด (Iadede)

เวอร์ชัน 1.2

เวอร์ชัน 1.2.4

17 เมษายน 2024

androidx.benchmark:benchmark-*:1.2.4 เปิดตัวแล้ว เวอร์ชัน 1.2.4 มีคอมมิตเหล่านี้

แก้ไขข้อบกพร่อง

  • แก้ไขปัญหาที่ไม่ได้ตั้งค่า srcset ของโปรไฟล์พื้นฐานในตัวแปรการเปรียบเทียบ นอกจากนี้ยังแก้ไข automaticGenerationDuringBuild ในไลบรารีที่ทำให้เกิดการขึ้นต่อกันแบบเวียนกลับด้วย (I28ab7, b/333024280)
  • ใช้ am force-stop เพื่อปิดแอปเมื่อไม่ใช่แอประบบ เช่น UI ของระบบหรือ Launcher การดำเนินการนี้จะแก้ไขข้อขัดข้องของเกณฑ์มาตรฐาน StartupMode.COLD จาก "แพ็กเกจ $package ต้องไม่ทำงานก่อน Cold Start" เนื่องจากกระบวนการหยุดทำงานไม่สำเร็จโดยสมบูรณ์ (I5e028)

เวอร์ชัน 1.2.3

24 มกราคม 2024

androidx.benchmark:benchmark-*:1.2.3 เปิดตัวแล้ว เวอร์ชัน 1.2.3 มีคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • นำข้อยกเว้นออกจากปลั๊กอิน Gradle ของโปรไฟล์พื้นฐานเมื่อ AGP เป็นเวอร์ชัน 8.3.0 ขึ้นไป
  • แก้ไขการรวมโปรไฟล์พื้นฐานของไลบรารีใน AAR ก่อน AGP 8.3.0-alpha15

เวอร์ชัน 1.2.2

1 ธันวาคม 2023

androidx.benchmark:benchmark-*:1.2.2 เปิดตัวแล้ว เวอร์ชัน 1.2.2 มีคอมมิตเหล่านี้

โปรไฟล์พื้นฐาน

  • บันทึกการดำเนินการจะแสดงเส้นทางไฟล์เอาต์พุตของโปรไฟล์พื้นฐานเป็น URI ของไฟล์ในเครื่อง (aosp/2843918, aosp/2853665, b/313976958)

เวอร์ชัน 1.2.1

15 พฤศจิกายน 2023

androidx.benchmark:benchmark-*:1.2.1 เปิดตัวแล้ว เวอร์ชัน 1.2.1 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ปรับปรุงข้อความแสดงข้อผิดพลาดเมื่อผู้ใช้ปิดใช้ตัวแปรทดสอบ (b/307478189)
  • เพิ่มพร็อพเพอร์ตี้เพื่อรองรับการผสานรวมการทดสอบ AS (b/309805233), (b/309116324)

เวอร์ชัน 1.2.0

18 ตุลาคม 2023

androidx.benchmark:benchmark-*:1.2.0 เปิดตัวแล้ว เวอร์ชัน 1.2.0 มีคอมมิตเหล่านี้

การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.1.0

โปรไฟล์พื้นฐาน

  • ปลั๊กอิน Gradle ของโปรไฟล์พื้นฐานใหม่จะบันทึกและรวมโปรไฟล์พื้นฐานไว้ในเวิร์กโฟลว์การทดสอบและการสร้างโดยอัตโนมัติ
  • BaselineProfileRule.collect ตอนนี้เสถียรแล้ว ซึ่งเป็น API BaselineProfileRule.collectBaselineProfile เวอร์ชันทดลองก่อนหน้านี้ที่ได้รับการปรับปรุงและลดความซับซ้อน
    • เพียงระบุ packageName แล้วขับเคลื่อนแอปของคุณ
  • สำหรับไลบรารีที่สร้างโปรไฟล์พื้นฐาน ตอนนี้คุณสามารถกรองกฎที่สร้างขึ้นในโค้ด (อาร์กิวเมนต์ BaselineProfileRule.collect) หรือกรองในปลั๊กอิน Gradle ได้ง่ายยิ่งขึ้น
  • การแก้ไข
    • แก้ไขการรวบรวมโปรไฟล์พื้นฐานใน Android U ขึ้นไป (Id1392, b/277645214)

Macrobenchmark

  • การรวบรวม
    • ตอนนี้ Macrobenchmark จะรีเซ็ตสถานะการคอมไพล์อย่างสมบูรณ์และถูกต้องสำหรับการคอมไพล์แต่ละครั้ง ซึ่งจะต้องติดตั้ง APK อีกครั้งก่อน Android 14 ดังนั้นเราขอแนะนำอย่างยิ่งให้ทำการเปรียบเทียบใน Android 14 ขึ้นไปหากต้องการคงสถานะ (เช่น การเข้าสู่ระบบของผู้ใช้) ในสิ่งที่กำลังวัด
    • นอกจากนี้ คุณยังแก้ปัญหานี้ได้โดยควบคุมการคอมไพล์แอปแยกต่างหาก และข้ามการคอมไพล์ด้วย CompilationMode.Ignore() หรืออาร์กิวเมนต์การวัดประสิทธิภาพ
  • อาร์กิวเมนต์การวัดคุม

    • การรองรับอาร์กิวเมนต์การวัดประสิทธิภาพ androidx.benchmark.dryRunMode.enable (พร้อมใช้งานใน Microbenchmark อยู่แล้ว) เพื่อการเรียกใช้การตรวจสอบที่รวดเร็วขึ้น (เช่น เมื่อสร้างการทดสอบประสิทธิภาพหรือใน Presubmit)
    • การสนับสนุนสำหรับ androidx.benchmark.profiling.mode=StackSampling และ MethodTracing
    • เพิ่ม androidx.benchmark.enabledRules เพื่ออนุญาตการกรองรันไทม์ของการทดสอบกฎโปรไฟล์พื้นฐานเทียบกับ Macrobenchmark
    • เพิ่มอาร์กิวเมนต์ androidx.benchmark.perfettoSdkTracing.enable เพื่อเปิดใช้การติดตามด้วย tracing-perfetto เช่น การติดตามการเขียนซ้ำของ Compose โปรดทราบว่าเมื่อใช้กับ StartupMode.COLD เวลาจะได้รับผลกระทบอย่างมากเนื่องจากระบบจะโหลดและเปิดใช้ไลบรารีการติดตามระหว่างการเริ่มต้นแอป
  • ข้อกำหนด

    • ตอนนี้ Macrobenchmark ต้องใช้ ProfileInstaller 1.3.0 ขึ้นไปในแอปเป้าหมายเพื่อเปิดใช้การบันทึก / รีเซ็ตโปรไฟล์และการล้างแคชตัวปรับเฉดสี
  • Metric API เวอร์ชันทดลองใหม่

    • เพิ่ม TraceSectionMetric เวอร์ชันทดลอง ซึ่งช่วยให้ดึงการจับเวลาอย่างง่ายจากบล็อก trace("") {} ในแอป หรือ TraceMetric เพื่อใช้ประโยชน์จากความสามารถในการค้นหาทั้งหมดของ Perfetto TraceProcessor
    • เพิ่ม PowerMetric เวอร์ชันทดลองเพื่อบันทึกข้อมูลการใช้พลังงาน
    • เพิ่ม MemoryCountersMetric เวอร์ชันทดลองเพื่อนับข้อผิดพลาดของหน้า
    • เพิ่ม PerfettoTraceProcessor API เวอร์ชันทดลอง ซึ่งใช้ภายในเพื่อดึงข้อมูลเมตริกจากการติดตามระบบ (หรือที่เรียกว่าการติดตาม Perfetto)
  • จำนวนช่องโหว่ที่แก้ไขได้

    • แก้ไขปัญหาแอปขัดข้องเมื่อติดตั้งหรือแยกโปรไฟล์จากแอปที่ติดตั้งจาก APK หลายรายการ (เช่น จาก App Bundle)
    • แก้ไขFrameTimingMetricการไม่สนใจเฟรมที่มีรหัสเฟรมไม่สอดคล้องกัน (โดยทั่วไปคือเฟรมระหว่างการกระเพื่อมใน API 31 ขึ้นไป) (I747d2, b/279088460)
    • แก้ไขข้อผิดพลาดในการแยกวิเคราะห์การติดตาม > 64MB (Ief831, b/269949822)
    • ชี้แจงข้อผิดพลาดเมื่อไม่ได้กำหนดค่าอิมเมจระบบปฏิบัติการของอุปกรณ์ (โดยเฉพาะโปรแกรมจำลอง) อย่างถูกต้องสำหรับการติดตามหรือการคอมไพล์
    • ข้ามการตรวจสอบระดับแบตเตอรี่สำหรับอุปกรณ์ที่ไม่มีแบตเตอรี่ (ไมโครและมาโคร)
    • ปรับปรุงเอาต์พุตไฟล์ โดยมีข้อผิดพลาดที่ชัดเจนยิ่งขึ้นสำหรับไดเรกทอรีเอาต์พุตที่ไม่ถูกต้อง และค่าเริ่มต้นที่ปลอดภัยยิ่งขึ้น
    • ปรับปรุงความเสถียรของ StartupMode.COLD โดยการลบแคชตัวปรับเฉดสีอย่างสม่ำเสมอ (แสดงผ่าน MacrobenchmarkScope.dropShaderCache ด้วย)
    • การสำรองข้อมูล Leanback แบบคงที่สำหรับ startActivityAndWait

Microbenchmark

  • ฟีเจอร์
    • เราได้ย้ายการสร้างโปรไฟล์ไปยังระยะแยกต่างหากหลังจากเมตริกอื่นๆ เพื่อให้การทดสอบ 1 ครั้งแสดงทั้งเวลาที่แม่นยำและผลลัพธ์การสร้างโปรไฟล์ได้
  • API เวอร์ชันทดลอง
    • เพิ่ม API MicrobenchmarkConfig เวอร์ชันทดลองสำหรับกำหนดเมตริกที่กำหนดเองและกำหนดค่าการติดตามและการจัดทำโปรไฟล์ ใช้เพื่อบันทึกร่องรอยเมธอดหรือบันทึกจุดติดตามได้ (แต่โปรดระวังโอเวอร์เฮดของการติดตาม)
    • เพิ่ม API เวอร์ชันทดลองสำหรับการควบคุม BenchmarkState แยกจาก BenchmarkRule โดยไม่ต้องใช้ JUnit
    • เพิ่มระเบียน PerfettoTrace เวอร์ชันทดลองเพื่อเปิดใช้การบันทึกการติดตาม Perfetto ด้วยการกำหนดค่าที่กำหนดเองแยกจาก API การเปรียบเทียบ
  • การแก้ไข
    • แก้ปัญหาช่องว่างนำหน้าที่หายไปในเอาต์พุตการเปรียบเทียบของ Android Studio
    • แก้ไขปัญหาที่คำเตือนอาจพิมพ์ในเอาต์พุตการเปรียบเทียบของ Android Studio ไม่สำเร็จ
    • แก้ไขข้อขัดข้อง SampledProfiling ใน Android 13 (API 33) ขึ้นไป
    • ปรับปรุงประสิทธิภาพของ dryRunMode อย่างมากด้วยการข้าม IsolationActivity และการติดตาม Perfetto (โหมดทดลองเรียกใช้เร็วขึ้นสูงสุด 10 เท่าในระบบปฏิบัติการเวอร์ชันเก่า)

เวอร์ชัน 1.2.0-rc02

6 ตุลาคม 2023

androidx.benchmark:benchmark-*:1.2.0-rc02 เปิดตัวแล้ว เวอร์ชัน 1.2.0-rc02 มีคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขเอาต์พุตไฟล์ Benchmark เพื่อไม่ให้ขัดจังหวะการคัดลอกไฟล์ปลั๊กอิน BaselineProfile อีกต่อไป ระบบสร้างและคัดลอกไฟล์ออกจากอุปกรณ์แล้ว แต่มีการเปลี่ยนชื่อไฟล์เพื่อให้ปลั๊กอิน Gradle ไม่เห็นไฟล์เหล่านั้น (I8dbcc, b/303034735, b/296453339)
  • อธิบายข้อความแสดงข้อผิดพลาดในการโหลด tracing-perfetto เมื่อแทรกจากโมดูล Macrobenchmark ลงในแอปพลิเคชันเป้าหมาย

เวอร์ชัน 1.2.0-rc01

20 กันยายน 2023

androidx.benchmark:benchmark-*:1.2.0-rc01 เปิดตัวแล้ว เวอร์ชัน 1.2.0-rc01 มีคอมมิตเหล่านี้

แก้ไขข้อบกพร่อง

  • ตอนนี้ระบบจะแสดงข้อยกเว้น (พร้อมวิธีการแก้ไข) เมื่อการติดตาม Perfetto SDK ไม่สามารถเริ่มต้นใน Benchmark (I6c878, b/286228781)
  • แก้ไขข้อขัดข้อง OOM เมื่อแปลงร่องรอยเมธอด ART -> รูปแบบ perfetto (I106bd, b/296905344)
  • (Macrobenchmark) ชี้แจงป้ายกำกับการติดตามเมธอดเมื่อลิงก์ในเอาต์พุตการทดสอบของ Studio และแก้ไขชื่อไฟล์การติดตามเมธอดให้ไม่ซ้ำกันในอุปกรณ์/โฮสต์ เพื่อไม่ให้มีการเขียนทับเมื่อเรียกใช้การเปรียบเทียบมากกว่า 1 รายการ (I08e65, b/285912360)
  • ตรวจสอบว่าอุปกรณ์ทำงานอยู่เมื่อบันทึกโปรไฟล์พื้นฐาน (I503fc)

เวอร์ชัน 1.2.0-beta05

30 สิงหาคม 2023

androidx.benchmark:benchmark-*:1.2.0-beta05 เปิดตัวแล้ว เวอร์ชัน 1.2.0-beta05 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้ปลั๊กอิน Baseline Profile Gradle รองรับปลั๊กอิน Android Gradle 8.3 แล้ว (aosp/2715214)

เวอร์ชัน 1.2.0-beta04

23 สิงหาคม 2023

androidx.benchmark:benchmark-*:1.2.0-beta04 เปิดตัวแล้ว เวอร์ชัน 1.2.0-beta04 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ตอนนี้ปลั๊กอิน Baseline Profiles Gradle รองรับปลั๊กอิน Android Gradle 8.3 แล้ว (aosp/2715214)

แก้ไขข้อบกพร่อง

  • แก้ไขข้อผิดพลาดในการเขียน / ย้ายและดึงไฟล์ (โดยเฉพาะไฟล์จากการทดสอบที่กำหนดพารามิเตอร์) ด้วยการล้างชื่อไฟล์เอาต์พุตเพิ่มเติม โดยหลีกเลี่ยง "=" และ ":" ในชื่อไฟล์เอาต์พุต (I759d8)

เวอร์ชัน 1.2.0-beta03

9 สิงหาคม 2023

androidx.benchmark:benchmark-*:1.2.0-beta03 เปิดตัวแล้ว เวอร์ชัน 1.2.0-beta03 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่มอาร์กิวเมนต์เพื่อกรอง TraceSectionMetric ให้เหลือเฉพาะแพ็กเกจเป้าหมาย ซึ่งเปิดอยู่โดยค่าเริ่มต้น (Ia219b, b/292208786)

แก้ไขข้อบกพร่อง

  • เปลี่ยนชื่ออาร์กิวเมนต์การวัดผล fullTracing.enable เป็น perfettoSdkTracing.enable เพื่อให้สอดคล้องกับชื่ออาร์ติแฟกต์และการอ้างอิงอื่นๆ fullTracing.enable จะยังคงทำงานเป็นตัวเลือกสำรองต่อไป (I7cc00)
  • ตอนนี้จุดติดตามภายในของไลบรารีการเปรียบเทียบ (รวมถึงการติดตามลูป/เฟสของ Microbenchmark) จะแสดงในโปรแกรมดู System Tracing ของ Studio และซ้อนอยู่ภายใต้กระบวนการที่ถูกต้องใน Perfetto (I6b2e7, b/293510459)
  • นำข้อผิดพลาด NOT-PROFILEABLE ของ Macrobenchmark ใน API 31 ขึ้นไปออก และข้ามการตรวจสอบที่กำหนดโปรไฟล์ได้ในอุปกรณ์ที่รูท eng/userdebug (I2abac, b/291722507)
  • เมื่อใช้การเพิ่มประสิทธิภาพเลย์เอาต์ Dex ระบบจะถือว่ากฎโปรไฟล์การเริ่มต้นเป็นกฎโปรไฟล์พื้นฐานด้วย (aosp/2684246, b/293889189)

เวอร์ชัน 1.2.0-beta02

26 กรกฎาคม 2023

androidx.benchmark:benchmark-*:1.2.0-beta02 เปิดตัวแล้ว เวอร์ชัน 1.2.0-beta02 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่ม API เวอร์ชันทดลองสำหรับเมตริกและการกำหนดค่าที่กำหนดเองของ Microbench (เช่น เครื่องมือวิเคราะห์และเครื่องมือติดตาม) (I86101, b/291820856)

การแก้ไขข้อบกพร่อง

  • รายงานข้อผิดพลาดใน Macrobench เมื่อกำหนดค่า OS ไม่ถูกต้องสำหรับการติดตาม ซึ่งเพิ่งได้รับการแก้ไขในโปรแกรมจำลอง API 26/28 ARM64 (I0a328, b/282191686)
  • เพิ่มรายละเอียดเกี่ยวกับความล้มเหลวในการรีเซ็ตการคอมไพล์เพื่อแนะนำให้อัปเดตโปรแกรมจำลอง เนื่องจากโปรแกรมจำลองบางโปรแกรมเพิ่งแก้ไขปัญหานี้ (I8c815, b/282191686)
  • ทำให้ androidx.test.uiautomator:uiautomator:2.2.0 เป็น api แทนที่จะเป็นทรัพยากร Dependency ของ implementation (I1981e)

เวอร์ชัน 1.2.0-beta01

18 กรกฎาคม 2023

androidx.benchmark:benchmark-*:1.2.0-beta01 เปิดตัวแล้ว เวอร์ชัน 1.2.0-beta01 มีคอมมิตเหล่านี้

แก้ไขข้อบกพร่อง

  • แก้ไขการซ่อนคำเตือนในเอาต์พุตการเปรียบเทียบใน Studio และวิธีแก้ปัญหาช่องว่างนำหน้าจากเอาต์พุตการเปรียบเทียบไม่แสดงใน Studio (Ia61d0, b/227205461, b/286306579, b/285912360)
  • ความคิดเห็นที่แก้ไขแล้วสำหรับ FrameTimingMetric เมตริกย่อยมีชื่อว่า frameDurationCpuMs (Ib097f, b/288830934)

เวอร์ชัน 1.2.0-alpha16

21 มิถุนายน 2023

androidx.benchmark:benchmark-*:1.2.0-alpha16 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha16 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • BaselineProfileRule.collectBaselineProfile() API เปลี่ยนชื่อเป็น BaselineProfileRule.collect() แล้ว (I4b665)

แก้ไขข้อบกพร่อง

  • การรองรับ Macrobenchmark สำหรับ androidx.benchmark.profiling.mode = MethodTracing (I7ad37, b/285912360)
  • การสร้างโปรไฟล์ Microbenchmark ย้ายไปอยู่ในระยะแยกต่างหาก จึงเกิดขึ้นตามลําดับหลังจากการวัดผล แทนที่จะแทนที่การวัดผล ตอนนี้ส่วนการติดตาม MethodTracing จะรวมอยู่ในการติดตาม Perfetto ที่บันทึกไว้ด้วย (หากมี) (I9f657, b/285014599)
  • เพิ่มการวัดจำนวนไปยัง TraceSectionMetric ด้วย Mode.Sum (Ic121a, b/264398606)

เวอร์ชัน 1.2.0-alpha15

7 มิถุนายน 2023

androidx.benchmark:benchmark-*:1.2.0-alpha15 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha15 มีคอมมิตต่อไปนี้

ฟีเจอร์ใหม่

  • เพิ่ม MemoryUsageMetric เวอร์ชันทดลองเพื่อติดตามการใช้หน่วยความจำของแอปพลิเคชันเป้าหมาย (I56453, b/133147125, b/281749311)
  • เพิ่มการรองรับการกำหนดค่า Perfetto ที่กำหนดเองทั้งหมดด้วย PerfettoTrace.record (If9d75, b/280460183)
  • เพิ่มพร็อพเพอร์ตี้เพื่อข้ามการสร้างโปรไฟล์พื้นฐาน การใช้งาน: ./gradlew assemble -Pandroidx.baselineprofile.skipgeneration (I37fda, b/283447020)

การเปลี่ยนแปลง API

  • collectBaselineProfile API จะสร้างโปรไฟล์พื้นฐานที่เสถียรเสมอ เราได้นำ collectStableBaselineProfile API ออกแล้ว และควรใช้ collectBaselineProfile แทน (I17262, b/281078707)
  • เปลี่ยนอาร์กิวเมนต์ filterPredicate ของ BaselineProfileRule เป็นค่าที่ไม่ใช่ Null โดยมีค่าเริ่มต้นที่เทียบเท่าเพื่อให้ลักษณะการทำงานของตัวกรองเริ่มต้นชัดเจนยิ่งขึ้นในเอกสาร (I3816e)

แก้ไขข้อบกพร่อง

  • ปิดใช้ IsolationActivity และการติดตาม Perfetto ใน dryRunMode เพื่อปรับปรุงประสิทธิภาพอย่างมาก เนื่องจากสิ่งเหล่านี้เป็นส่วนใหญ่ของรันไทม์ (Ie4f7d)
  • รองรับการสุ่มตัวอย่างสแต็กการเรียกใช้ใน Macrobenchmark โดยใช้อาร์กิวเมนต์การทดสอบการวัดคุม androidx.benchmark.profiling.mode=StackSampling และ androidx.benchmark.profiling.sampleFrequency (I1d13b, b/282188489)
  • แก้ไขข้อขัดข้องเมื่อวางเชเดอร์ใน Android U (API 34) รวมถึงในโปรแกรมจำลอง (I031ca, b/274314544)

เวอร์ชัน 1.2.0-alpha14

3 พฤษภาคม 2023

androidx.benchmark:benchmark-*:1.2.0-alpha14 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha14 มีคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • แก้ไขFrameTimingMetricการละเว้นเฟรมที่มีรหัสเฟรมไม่สอดคล้องกัน ซึ่งจะทำให้ภาพเคลื่อนไหวบางรายการในแพลตฟอร์มเวอร์ชันล่าสุด (API 31 ขึ้นไป) ข้ามเฟรมจำนวนมากขณะที่ RenderThread กำลังเคลื่อนไหว (เช่น ระหว่างการกระเพื่อม) (I747d2, b/279088460)
  • แก้ไขการแยกวิเคราะห์ตัวประมวลผลการติดตามสำหรับการติดตามที่มีขนาดใหญ่กว่า 64 MB (Ief831, b/269949822)
  • แก้ไขการสร้างโปรไฟล์พื้นฐานใน Android U ที่ล้มเหลวเนื่องจากเอาต์พุตของคำสั่ง pm dump-profiles แตกต่างกัน (Id1392, b/277645214)
  • แก้ไขสคริปต์การล็อกสัญญาณนาฬิกา GPU เพื่อเปรียบเทียบสตริงอย่างถูกต้อง (I53e54, b/213935715)

เวอร์ชัน 1.2.0-alpha13

5 เมษายน 2023

androidx.benchmark:benchmark-*:1.2.0-alpha13 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha13 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่มพารามิเตอร์ประเภทโปรไฟล์เมื่อสร้างโปรไฟล์พื้นฐานเพื่อรองรับฟีเจอร์โปรไฟล์การเริ่มต้นที่กำลังจะเปิดตัว (Ie20d7, b/275093123)
  • เพิ่ม TraceMetric API เวอร์ชันทดลองใหม่สำหรับการกำหนดเมตริกที่กำหนดเองอย่างเต็มรูปแบบตามเนื้อหาของร่องรอย Perfetto (I4ce31, b/219851406)
  • เพิ่มเมตริกการทดลองเพื่อกำหนดจำนวนข้อผิดพลาดของหน้าในระหว่างการทดสอบเปรียบเทียบ (I48db0)

เวอร์ชัน 1.2.0-alpha12

22 มีนาคม 2023

androidx.benchmark:benchmark-*:1.2.0-alpha12 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha12 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ปลั๊กอิน Gradle ของโปรไฟล์พื้นฐานใหม่เปิดตัวในเวอร์ชันอัลฟ่า ซึ่งช่วยให้สร้างโปรไฟล์พื้นฐานได้ง่ายขึ้นและลดความซับซ้อนของเวิร์กโฟลว์ของนักพัฒนาแอป

การเปลี่ยนแปลง API

  • นำการรองรับการติดตาม Perfetto ใน API 21 และ 22 ออก ซึ่งรวมถึงทั้ง Microbenchmark และ API PerfettoTrace เวอร์ชันทดลอง ก่อนเวอร์ชันนี้ การเชื่อมต่อ UiAutomation ในอุปกรณ์บางเครื่องไม่เสถียร (I78e8c)
  • เพิ่ม API เวอร์ชันทดลองแบบสาธารณะสำหรับ PerfettoTraceProcessor เพื่อเปิดใช้การแยกวิเคราะห์เนื้อหาการติดตาม นี่เป็นขั้นตอนในการสร้างเมตริกที่กําหนดเองอย่างเต็มรูปแบบโดยอิงตามข้อมูลการติดตามของ Perfetto (I2659e, b/219851406)

เวอร์ชัน 1.2.0-alpha11

8 มีนาคม 2023

androidx.benchmark:benchmark-*:1.2.0-alpha11 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha11 มีคอมมิตต่อไปนี้

แก้ไขข้อบกพร่อง

  • แก้ไขข้อขัดข้องใน MacrobenchmarkRule และ BaselineProfileRule เมื่อติดตั้งอีกครั้งหรือดึงข้อมูลโปรไฟล์จาก App Bundle ที่มี APK หลายรายการ (I0d8c8, b/270587281)

เวอร์ชัน 1.2.0-alpha10

22 กุมภาพันธ์ 2023

androidx.benchmark:benchmark-*:1.2.0-alpha10 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha10 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • ใน Android 14 ขึ้นไป Macrobenchmark จะไม่ติดตั้งแอปพลิเคชันเป้าหมายอีกครั้งเพื่อรีเซ็ตสถานะการคอมไพล์ เนื่องจากมีฟีเจอร์ใหม่ในแพลตฟอร์ม ก่อนหน้านี้ คุณจำเป็นต้องมีอุปกรณ์ที่รูทแล้ว หรือต้องจัดการกับสถานะแอปพลิเคชันทั้งหมด (เช่น การเข้าสู่ระบบของผู้ใช้) ที่ถูกนำออกก่อนการเรียกใช้การเปรียบเทียบแต่ละครั้ง (I9b08c, b/249143766)

แก้ไขข้อบกพร่อง

  • แก้ไข DryRunMode เพื่อไม่ให้เกิดข้อขัดข้องกับโปรไฟล์ที่ว่างเปล่าอีกต่อไป เนื่องจากการข้ามการคอมไพล์ แต่จะเรียกใช้การทำซ้ำครั้งเดียวและดึงข้อมูลโปรไฟล์เพื่อให้มั่นใจว่าจะมีการบันทึกบางอย่าง (I2f05d, b/266403227)
  • แก้ไขข้อขัดข้องของ PowerMetric เมื่อตรวจสอบว่ามีสถิติการใช้พลังงานในระดับ API เก่าหรือไม่ (5faaf9, b/268253898)

เวอร์ชัน 1.2.0-alpha09

11 มกราคม 2023

androidx.benchmark:benchmark-*:1.2.0-alpha09 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha09 มีคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • เปิดใช้การส่ง None ไปยังอาร์กิวเมนต์การวัดผล androidx.benchmark.enabledRules เพื่อปิดใช้การเปรียบเทียบทั้งหมด / การสร้างโปรไฟล์พื้นฐาน (I3d7fd, b/258671856)
  • แก้ไขการจับภาพ PerfettoTrace ในโมดูลแอป (เช่น APK ทดสอบที่ไม่ใช่การทดสอบด้วยตนเอง) (I12cfc)
  • แก้ไขลำดับอาร์กิวเมนต์ adb pull ของโปรไฟล์พื้นฐานในเอาต์พุต Studio (I958d1, b/261781624)
  • ตอนนี้ API 33 ของโปรแกรมจำลอง Arm ได้รับการจดจำอย่างถูกต้องแล้วเมื่อพยายามเรียกใช้ Macrobenchmark และจะพิมพ์คำเตือนอย่างถูกต้อง (69133b,b/262209591)
  • ข้ามการตรวจสอบระดับแบตเตอรี่ในอุปกรณ์ที่ไม่มีแบตเตอรี่ใน Macrobenchmark (fe4114, b/232448937)

เวอร์ชัน 1.2.0-alpha08

7 ธันวาคม 2022

androidx.benchmark:benchmark-*:1.2.0-alpha08 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha08 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่ม API เวอร์ชันทดลองใหม่ PerfettoTrace.record {} และ PerfettoTraceRule เพื่อบันทึกการติดตาม Perfetto (หรือที่เรียกว่า System Traces) เป็นส่วนหนึ่งของการทดสอบ เพื่อตรวจสอบลักษณะการทำงานและประสิทธิภาพของการทดสอบ (I3ba16)
  • BaselineProfileRule ตอนนี้ยอมรับตัวระบุตัวกรองแทนรายการคำนำหน้าแพ็กเกจแล้ว ซึ่งจะช่วยให้การทดสอบควบคุมการกรองได้อย่างเต็มที่ (I93240)
  • เพิ่ม API เวอร์ชันทดลอง BaselineProfileRule.collectStableBaselineProfile ซึ่งจะรอจนกว่าโปรไฟล์พื้นฐานจะเสถียรเป็นเวลา N รอบ (I923f3)
  • เพิ่มความสามารถในการระบุคำนำหน้าชื่อไฟล์เอาต์พุตเมื่อสร้างโปรไฟล์พื้นฐานโดยใช้ BaselineProfileRule (I7b59f, b/260318655)

การแก้ไขข้อบกพร่อง

  • ปรับปรุงความปลอดภัยของการเขียนเอาต์พุตไฟล์ ซึ่งควรป้องกันไม่ให้ไฟล์เอาต์พุตไม่ได้รับการเขียน / ต่อท้ายโดยไม่มีการแจ้งเตือน โดยเฉพาะใน API 21/22 (If8c44, b/227510293)
  • แก้ไขเอาต์พุตการติดตาม simpleperf เพื่อสร้างและวางไฟล์อย่างถูกต้อง นอกจากนี้ยังช่วยแก้ปัญหาทั่วไปที่ Gradle ดึงไฟล์ไม่สำเร็จด้วย (I12a1c, b/259424099)
  • ปรับปรุงข้อความแสดงข้อผิดพลาดของ profileinstaller ที่พิมพ์ออกมาเมื่อ profileinstaller เก่าเกินไป ตอนนี้ระบบจะแจ้งให้คุณอัปเดตเวอร์ชัน profileinstaller (1.2.1) เพื่อวัดโปรไฟล์พื้นฐานใน API 31 ถึง 33 แทนที่จะแจ้งว่าไม่รองรับ (Ia517f, b/253519888)
  • แก้ไขข้อผิดพลาดของคำสั่ง Shell หลายรายการในข้อความ onerror พิมพ์ API ที่จำเป็น <=23 รวมถึงการตั้งค่าไบนารีการบันทึก Perfetto ที่ไม่สำเร็จและข้อผิดพลาดในการบันทึกการติดตาม (Ib6b87, b/258863685)
  • จัดเรียงกฎโปรไฟล์ที่สร้างขึ้นโดยอัตโนมัติเพื่อลดจำนวนการเปลี่ยนแปลงเมื่อมีการเปลี่ยนแปลงเมื่อเวลาผ่านไป (เมื่อตรวจสอบกฎโปรไฟล์ในการควบคุมแหล่งที่มา) (Ie2509)
  • แก้ไขข้อขัดข้องในบิลด์ที่ไม่ได้รูทซึ่งต่ำกว่า Android 13 (API 33) พร้อมข้อความ Expected no stderr from echo 3 > /proc/sys/vm/drop_caches (I6c245, b/259508183)

ปัญหาที่ทราบ - MacrobenchmarkScope.dropShaderCache() อาจขัดข้องเนื่องจากไม่มีรีจิสทรีการออกอากาศในไฟล์ Manifest ของ profileinstaller ซึ่งยังไม่ได้เผยแพร่ (I5c728, b/258619948) หากต้องการแก้ปัญหาใน profileinstaller:1.3.0-alpha02 ให้เพิ่มโค้ดต่อไปนี้ลงใน AndroidManifest.xml ของแอปพลิเคชัน (ไม่ใช่ของ Benchmark)

  <!-- 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>

เวอร์ชัน 1.2.0-alpha07

9 พฤศจิกายน 2022

androidx.benchmark:benchmark-*:1.2.0-alpha07 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha07 มีคอมมิตต่อไปนี้

การเปลี่ยนแปลง API

  • เพิ่ม PowerMetric API สำหรับวัดพลังงานและกำลังไฟใน Macrobenchmark (Ife601, b/220183779)
  • แก้ไข MacrobenchmarkScope.dropShaderCache() เพื่อลบแคชตัวปรับเฉดสีจริงๆ ซึ่งจะช่วยลดสัญญาณรบกวนได้ประมาณ 20 มิลลิวินาทีจากเกณฑ์เปรียบเทียบ StartupMode.COLD เนื่องจากตอนนี้ระบบจะล้างเฉดสีอย่างสม่ำเสมอในแต่ละรอบ ก่อนหน้านี้ การคอมไพล์ Partial โดยใช้การทำซ้ำแบบวอร์มอัปจะรายงานตัวเลขที่รวดเร็วอย่างไม่ถูกต้อง เนื่องจากมีแนวโน้มที่จะเกิดการแคชเฉดเดอร์มากขึ้นในระหว่างการวอร์มอัป การแก้ไขนี้ต้องใช้อุปกรณ์ที่รูทหรือใช้ profileinstaller:1.3.0-alpha02 ในแอปเป้าหมาย สำหรับการเปลี่ยนแปลง API ของไลบรารี ProfileInstaller โปรดดูหน้า ProfileInstaller 1.30-alpha02 (Ia5171, b/231455742)
  • เพิ่ม TraceSectionMode("label", Mode.Sum) ซึ่งช่วยให้วัดเวลาทั้งหมดที่ใช้ในส่วนการติดตามหลายส่วนที่มีป้ายกำกับเดียวกันได้ ตัวอย่างเช่น TraceSectionMetric("inflate", Mode.Sum) จะรายงานเมตริก inflateMs สำหรับเวลาทั้งหมดใน Macrobenchmark ที่ใช้ไปกับการสร้างอินสแตนซ์ นอกจากนี้ยังนำข้อกำหนด API 29 ออกด้วย เนื่องจาก TraceSectionMetric ทำงานร่วมกับ androidx.tracing.Trace เพื่อย้อนกลับไปยังระดับ API ที่ต่ำกว่า โดยใช้ forceEnableAppTracing ภายในแอปเป้าหมาย (Id7b68, b/231455742)

แก้ไขข้อบกพร่อง

  • ปรับปรุงความปลอดภัยของคำสั่ง Shell ภายในทั้งหมดโดยตรวจสอบเอาต์พุต/ข้อผิดพลาดทั้งหมด (I5984d, b/255402908, b/253094958)
  • ระบุอุปกรณ์ในคำสั่ง adb pull ของโปรไฟล์พื้นฐาน เพื่อให้คัดลอกคำสั่ง pull ได้ง่ายๆ หากมีการเชื่อมต่ออุปกรณ์หลายเครื่อง (โปรแกรมจำลองสูงสุด 1 เครื่อง) (I6ac6c, b/223359380)
  • เพิ่มข้อผิดพลาดหากไม่ได้ตั้งค่า APK ของการทดสอบ Macrobenchmark เป็นการวัดด้วยตนเอง ข้อผิดพลาดนี้จะป้องกันไม่ให้ทำการเปรียบเทียบระดับมาโครจากภายในกระบวนการของแอปเป้าหมาย ในกระบวนการนี้ Macrobench จะไม่สามารถคอมไพล์/หยุด/เริ่มแอปแบบ Cold Start หรือควบคุมสิทธิ์ของตนเองได้ (I4279b)
  • แก้ไขปัญหาใน measureRepeated() ที่ StartupMode.COLD จะไม่หยุดกระบวนการเป้าหมายหลังจาก setupBlock ตอนนี้setupBlockการโต้ตอบกับแอปจะไม่ทำให้กระบวนการของแอปทำงานต่อไป และการวัด Cold Start ที่ไม่ถูกต้อง (I8ebb7)

เวอร์ชัน 1.2.0-alpha06

24 ตุลาคม 2022

androidx.benchmark:benchmark-*:1.2.0-alpha06 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha06 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • BaselineProfileRule ไม่ต้องใช้รูทใน Android 13 (API 33) อีกต่อไป และไม่ได้อยู่ในขั้นทดลองแล้ว (Ie0a7d, b/250083467, b/253094958)
    • การเปลี่ยนแปลงนี้ยังแก้ไขวิธีล้างโปรไฟล์จากแอปไปยังดิสก์ในอุปกรณ์ที่ไม่ได้รูทด้วย แต่ต้องอัปเดตทรัพยากร Dependency ของ Profileinstaller ของแอปเป้าหมาย
    • หากต้องการใช้ BaselineProfileRule หรือ CompilationMode.Partial(warmupIterations) ในอุปกรณ์ที่ไม่ได้รูท คุณต้องอัปเดตแอปเป้าหมายให้ใช้ androidx.profileinstaller.profileinstaller:1.3.0-alpha01 ด้วย ซึ่งจะช่วยให้ล้างโปรไฟล์ไปยังดิสก์ได้อย่างถูกต้อง เพื่อให้คอมไพล์/ดึงข้อมูลได้

แก้ไขข้อบกพร่อง

  • แก้ไขข้อขัดข้องของ SampledProfiling ใน API 33 ขึ้นไป (I40743, b/236109374)

เวอร์ชัน 1.2.0-alpha05

5 ตุลาคม 2022

androidx.benchmark:benchmark-*:1.2.0-alpha05 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha05 มีคอมมิตเหล่านี้

แก้ไขข้อบกพร่อง

  • แก้ไขการแบ่งเฟรมในโปรแกรมดูการติดตามระบบของ Studio สำหรับการติดตามที่บันทึกไว้เพื่อการเปรียบเทียบ (I3f3ae, b/239677443)
  • แก้ไข FrameTimingMetric เพื่อแสดงรายการ FrameOverrun ว่าต้องใช้ API 31 แทน 29 (I716dd, b/220702554)
  • ตั้งค่าการทำซ้ำใน BaselineProfileRule และแสดงข้อผิดพลาดอย่างชัดเจนหากไม่ได้ติดตั้งแพ็กเกจเป้าหมาย (ดำเนินการแล้วสำหรับ MacrobenchmarkRule) (Ic09a3, b/227991471)

เวอร์ชัน 1.2.0-alpha04

21 กันยายน 2022

androidx.benchmark:benchmark-*:1.2.0-alpha04 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha04 มีคอมมิตต่อไปนี้

ฟีเจอร์ใหม่

  • เพิ่มการรองรับอาร์กิวเมนต์การวัด dryRunMode.enable ลงใน Macrobenchmark (มีอยู่แล้วใน Micro) เพื่อการพัฒนาในเครื่องที่รวดเร็วขึ้น และการตรวจสอบการทำงานอัตโนมัติของแอป (เช่น ในการส่งล่วงหน้า) ซึ่งจะลบล้างการทำซ้ำเป็น 1 ข้ามการคอมไพล์ ระงับข้อผิดพลาดในการกำหนดค่าทั้งหมด และปิดใช้เอาต์พุตไฟล์ .json ของการวัด (Ib51b4, b/175149857)

    ในบรรทัดคำสั่ง Gradle ให้ทำดังนี้

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

    ใน build.gradle

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

แก้ไขข้อบกพร่อง

  • แก้ไข StartupTimingMetric เพื่อไม่ให้ต้องเปิดกิจกรรมที่วัดผ่าน MacrobenchmarkScope.startActivityAndWait() อีกต่อไป ซึ่งหมายความว่าเมตริกนี้สามารถตรวจจับการเปิดแอปจาก เช่น การแจ้งเตือน, Context.startActivity(), การไปยังส่วนต่างๆ ตามกิจกรรมในแอป หรือคำสั่ง Shell (Ia2de6, b/245414235)
  • แก้ไขข้อบกพร่องที่ทำให้ startActivityAndWait หมดเวลาขณะพยายามรอให้การเปิดใช้งานเสร็จสมบูรณ์ในโปรแกรมจำลองโดยลดความเข้มงวดของการตรวจจับเฟรม (Ibe2c6, b/244594339, b/228946895)

เวอร์ชัน 1.2.0-alpha03

7 กันยายน 2022

androidx.benchmark:benchmark-*:1.2.0-alpha03 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha03 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่ม API เวอร์ชันทดลองสำหรับการใช้ BenchmarkState อย่างอิสระ โดยแยกจาก BenchmarkRule / JUnit4 (Id478f, b/228489614)

แก้ไขข้อบกพร่อง

  • เพิ่ม Leanback สำรองสำหรับ startActivityAndWait แล้ว (01ed77, b/242899915)

เวอร์ชัน 1.2.0-alpha02

24 สิงหาคม 2022

androidx.benchmark:benchmark-*:1.2.0-alpha02 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha02 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • ค่าเริ่มต้นเป็น am force stop สำหรับ MacrobenchmarkScope.killProcess() แม้ว่าจะมีการรูท ยกเว้นในระหว่างการสร้างโปรไฟล์พื้นฐาน คุณลบล้างการตั้งค่านี้ได้ด้วยอาร์กิวเมนต์บูลีนที่ไม่บังคับ (02cce9, b/241214097)

การแก้ไขข้อบกพร่อง

  • รองรับการสร้างโปรไฟล์พื้นฐานสำหรับแอประบบ (I900b8, b/241214097)
  • รองรับการตรวจสอบเมตริกพลังงาน ODPM ในอุปกรณ์ที่ไม่ได้รูท (a38c78, b/229623230)

เวอร์ชัน 1.2.0-alpha01

27 กรกฎาคม 2022

androidx.benchmark:benchmark-*:1.2.0-alpha01 เปิดตัวแล้ว เวอร์ชัน 1.2.0-alpha01 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • คอมโพเนนต์ tracing-perfetto-common ใหม่ที่ช่วยให้เครื่องมือเปิดใช้การติดตาม Perfetto SDK ในแอปที่แสดง SDK ดังกล่าวได้ (I2cc7f)
  • เพิ่มandroidx.benchmark.enabledRulesอาร์กิวเมนต์การวัดคุมเพื่อเปิดใช้การกรองการเรียกใช้ Macrobenchmark ให้เหลือเฉพาะการเปรียบเทียบ หรือการสร้างโปรไฟล์พื้นฐานเท่านั้น ส่ง "Macrobenchmark" หรือ "BaselineProfile" เพื่อเรียกใช้การทดสอบประเภทเดียว เช่น เมื่อสร้าง BaselineProfiles ในโปรแกรมจำลองเท่านั้น รองรับรายการที่คั่นด้วยคอมมาด้วย (I756b7, b/230371561)

    เช่น ใน build.gradle ของ Macrobenchmark

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

    หรือจากบรรทัดคำสั่ง Gradle ให้ทำดังนี้

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

การเปลี่ยนแปลง API

  • เพิ่ม PowerMetric ใหม่สำหรับการวัดงานด้านพลังงานและกำลังในเกณฑ์มาตรฐาน (I9f39b, b/220183779)
  • เพิ่มโหมดการคอมไพล์ CompilationMode.Ignore ใหม่เพื่อข้ามการรีเซ็ตโปรไฟล์และการคอมไพล์ (Ibbcf8, b/230453509)
  • เพิ่มพารามิเตอร์ใหม่ลงใน BaselineProfileRule#collectBaselineProfile เพื่อกรองไฟล์เอาต์พุตตามชื่อแพ็กเกจ (If7338, b/220146561)
  • ช่วยให้นักพัฒนาแอปคายประจุอุปกรณ์เพื่อวัดการใช้พลังงาน (I6a6cb)
  • เพิ่มความสามารถในการล้างแคช Shader ใน MacrobenchmarkScope (I32122)
  • ช่วยให้นักพัฒนาแอปกำหนดค่าการแสดงประเภทเมตริกและรายละเอียดหมวดหมู่ระบบย่อยที่ต้องการได้ (I810c9)
  • ก่อนหน้านี้ ระบบจะแสดง UnsupportedOperationException ในการเปรียบเทียบหากเรียกใช้ในอุปกรณ์ที่ไม่รองรับ ตอนนี้ UOE จะเกิดขึ้นก็ต่อเมื่อมีการใช้เมตริกในอุปกรณ์ที่ไม่รองรับ (เช่น PowerMetric.configure) (I5cf20, b/227229375)
  • เพิ่ม TotalPowerMetric และ TotalEnergyMetric สำหรับวัดกำลังและพลังงานทั้งหมดในหมวดหมู่ระบบแต่ละหมวดหมู่ในการเปรียบเทียบระดับมาโคร (I3b26b, b/224557371)

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาที่ระบบรีเซ็ตเมธอดที่คอมไพล์แล้วระหว่างการเปรียบเทียบมาโครแต่ละรายการในบิลด์ที่ไม่ได้รูทไม่ถูกต้อง ซึ่งน่าเสียดายที่ต้องติดตั้ง APK ใหม่ในแต่ละการทำซ้ำ ซึ่งจะล้างข้อมูลแอปพลิเคชันสำหรับ Macrobenchmark แต่ละรายการ (I31c74, b/230665435)
  • แก้ไขข้อขัดข้องในการบันทึกการติดตามใน API 21/22 (If7fd6, b/227509388, b/227510293, b/227512788)
  • ยกเครื่องการตรวจจับการเปิดกิจกรรมให้เสร็จสมบูรณ์เพื่อแก้ไขข้อยกเว้น "อ่านเมตริกไม่ได้" ในการเปรียบเทียบประสิทธิภาพระดับมาโครของการเริ่มต้นระบบ (Ia517c)

เวอร์ชัน 1.1.1

เวอร์ชัน 1.1.1

9 พฤศจิกายน 2022

androidx.benchmark:benchmark-*:1.1.1 เปิดตัวแล้ว เวอร์ชัน 1.1.1 มีคอมมิตต่อไปนี้

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหา android.system.ErrnoException: open failed: EACCES ซึ่งจะเกิดขึ้นในอุปกรณ์ Android 11 (API 30) ขึ้นไปบางเครื่อง นี่คือการเลือกแก้ไขจาก 1.2.0-alpha01 (aosp/2072249)

เวอร์ชัน 1.1.0

เวอร์ชัน 1.1.0

15 มิถุนายน 2022

androidx.benchmark:benchmark-*:1.1.0 เปิดตัวแล้ว เวอร์ชัน 1.1.0 มีคอมมิตต่อไปนี้

  • เวอร์ชันนี้เหมือนกับ androidx.benchmark:benchmark-*:1.1.0-rc03

การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.0.0

เวอร์ชัน 1.1.0-rc03

1 มิถุนายน 2022

androidx.benchmark:benchmark-*:1.1.0-rc03 เปิดตัวแล้ว เวอร์ชัน 1.1.0-rc03 มีคอมมิตต่อไปนี้

แก้ไขข้อบกพร่อง

  • หลีกเลี่ยงการติดตั้งแพ็กเกจเป้าหมายซ้ำทุกครั้งที่ทำการทดสอบเปรียบเทียบ ( aosp/​​2093027, b/231976084)

  • นำการหน่วงเวลา 300ms ออกจาก pressHome() (aosp/2086030, b/231322975)

  • ปรับปรุงความเร็วในการทำซ้ำของ Macrobenchmark โดยเพิ่มประสิทธิภาพคำสั่ง Shell ที่ใช้เบื้องหลัง (aosp/2086023, b/231323582)

  • รองรับอุปกรณ์ Gradle ที่มีการจัดการเมื่อสร้าง Baseline Profile ด้วย Macrobenchmark (aosp/2062228, b/228926421)

เวอร์ชัน 1.1.0-rc02

11 พฤษภาคม 2022

androidx.benchmark:benchmark-*:1.1.0-rc02 เปิดตัวแล้ว เวอร์ชัน 1.1.0-rc02 มีคอมมิตเหล่านี้

  • โปรดทราบว่ารุ่นนี้มีการเปลี่ยนแปลงลักษณะการทำงาน เนื่องจากตอนนี้แอปจะได้รับการติดตั้งใหม่อย่างสมบูรณ์ระหว่างการเปรียบเทียบแต่ละครั้งเพื่อให้แน่ใจว่าการวัดผลถูกต้อง

การแก้ไขข้อบกพร่อง/การเปลี่ยนแปลงลักษณะการทำงาน

  • แก้ไขปัญหาที่ระบบรีเซ็ตการคอมไพล์แอปไม่ถูกต้องระหว่างการทดสอบประสิทธิภาพระดับมาโคร และไม่รีเซ็ตเลยในบิลด์ที่ไม่ได้รูท วิธีนี้ช่วยแก้ปัญหาหลายกรณีที่การทดสอบหลายรายการส่งผลให้ CompilationMode มีผลต่อการวัดเพียงเล็กน้อยหรือไม่มีเลย ตอนนี้แอปเป้าหมายจะติดตั้งวิธีการทดสอบแต่ละวิธีอีกครั้งอย่างสมบูรณ์เพื่อหลีกเลี่ยงปัญหานี้ ซึ่งจะล้างข้อมูลแอปพลิเคชันระหว่างการทดสอบ Macrobenchmark แต่ละครั้ง (I31c74, b/230665435)

  • เนื่องจากวิธีนี้จะป้องกันไม่ให้แอปตั้งค่าสถานะก่อนการทดสอบ ตอนนี้คุณจึงข้ามการคอมไพล์ / การติดตั้งใหม่เพื่อหลีกเลี่ยงปัญหานี้ได้แล้ว ตัวอย่างเช่น คุณสามารถคอมไพล์เป้าหมายอย่างสมบูรณ์ด้วยคำสั่ง Shell cmd package compile -f -m speed <package> แล้วข้ามขั้นตอนการคอมไพล์ของ Macrobenchmark

    เช่น ใน build.gradle ของ Macrobenchmark

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

    หรือจากบรรทัดคำสั่ง Gradle ให้ทำดังนี้

    ./gradlew macrobenchmark:cC -P android.testInstrumentationRunnerArguments.androidx.benchmark.compilation.enabled=false
    
  • ทำให้สามารถแชร์โมดูลระหว่างการทดสอบการสร้างโปรไฟล์พื้นฐานและ Macrobenchmark ได้โดยเพิ่มอาร์กิวเมนต์การวัดคุม androidx.benchmark.enabledRules ส่ง "Macrobenchmark" หรือ "BaselineProfile" เพื่อเรียกใช้การทดสอบประเภทเดียว เช่น เมื่อสร้าง BaselineProfiles ในโปรแกรมจำลอง (I756b7, b/230371561)

    เช่น ใน build.gradle ของ Macrobenchmark

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

    หรือจากบรรทัดคำสั่ง Gradle ให้ทำดังนี้

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

เวอร์ชัน 1.1.0-rc01

20 เมษายน 2022

androidx.benchmark:benchmark-*:1.1.0-rc01 เปิดตัวแล้ว เวอร์ชัน 1.1.0-rc01 มีคอมมิตต่อไปนี้

แก้ไขข้อบกพร่อง

  • ตอนนี้ลิงก์เอาต์พุตโปรไฟล์พื้นฐานใน Android Studio จะใช้ชื่อไฟล์ที่ไม่ซ้ำกัน วิธีนี้จะช่วยให้เอาต์พุตแสดงผลลัพธ์ล่าสุดของการใช้ BaselineProfileRule เสมอ ( aosp/2057008, b/228203086 )

เวอร์ชัน 1.1.0-beta06

6 เมษายน 2022

androidx.benchmark:benchmark-*:1.1.0-beta06 เปิดตัวแล้ว เวอร์ชัน 1.1.0-beta06 มีคอมมิตเหล่านี้

แก้ไขข้อบกพร่อง

  • แก้ไขการบันทึกการติดตามที่ขัดข้องใน API 21/22 (If7fd6, b/227509388)
  • ยกเครื่องการตรวจหาการเปิดใช้งานกิจกรรมให้เสร็จสมบูรณ์เพื่อแก้ไขข้อยกเว้น "อ่านเมตริกไม่ได้" ในการทดสอบประสิทธิภาพมาโครเบื้องต้น (Ia517c)
  • แก้ไขเมตริกการเริ่มต้นระบบสำหรับ Macrobenchmark เมื่อใช้ CompilationMode.None() ก่อนการเปลี่ยนแปลงนี้ CompilationMode.Partial() จะดูเหมือนช้ากว่า Compilation.None() (611ac9)

เวอร์ชัน 1.1.0-beta05

23 มีนาคม 2022

androidx.benchmark:benchmark-*:1.1.0-beta05 เปิดตัวแล้ว เวอร์ชัน 1.1.0-beta05 มีคอมมิตเหล่านี้

การแก้ไขข้อบกพร่อง

  • ปิดแพ็กเกจหลังจากข้ามการติดตั้งโปรไฟล์เมื่อใช้ CompilationMode.None (aosp/1991373)
  • แก้ไขปัญหาที่ Macrobenchmarks ไม่สามารถรวบรวมเมตริกการเริ่มต้นเมื่อใช้StartupMode.COLD (aosp/2012227 b/218668335)

เวอร์ชัน 1.1.0-beta04

23 กุมภาพันธ์ 2022

androidx.benchmark:benchmark-*:1.1.0-beta04 เปิดตัวแล้ว เวอร์ชัน 1.1.0-beta04 มีคอมมิตเหล่านี้

แก้ไขข้อบกพร่อง

  • แก้ไขเมตริกที่ขาดหายไปใน Android 10 และ NoSuchElementException ซึ่งเกิดจากการที่ไม่ได้บันทึกชื่อกระบวนการ อย่างถูกต้องในเทรซ (Ib4c17, b/218668335)

  • ใช้ PowerManager สำหรับการตรวจหาการควบคุมปริมาณความร้อนใน Q (API 29) ขึ้นไป ซึ่งจะช่วยลดความถี่ของผลบวกเท็จในการตรวจหาการควบคุมความร้อน (ลองใช้การทดสอบซ้ำหลังจากระบายความร้อน 90 วินาที) และเร่งความเร็วการทดสอบอย่างมากในบิลด์ของผู้ใช้ นอกจากนี้ยังตรวจจับการควบคุมปริมาณได้แม้ว่าความเร็วสัญญาณนาฬิกาจะถูกล็อกไว้ (หากล็อกไว้สูงเกินไปสำหรับสภาพแวดล้อมทางกายภาพของอุปกรณ์) (I9c027, b/217497678, b/131755853)

  • กรองการทำโปรไฟล์ตัวอย่าง Simpleperf ไปยังเทรด measureRepeated เท่านั้นเพื่อลดความซับซ้อนในการตรวจสอบ (Ic3e12, b/217501939)

  • รองรับเมตริกจากกระบวนการย่อยของ UI ที่มีชื่อในแอปแบบหลายกระบวนการ (Ice6c0, b/215988434)

  • กรองกฎของ Baseline Profile เพื่อกำหนดเป้าหมายเป็น Android 9 (SDK 28) aosp/1980331 b/216508418

  • ข้ามการติดตั้งโปรไฟล์เมื่อใช้ Compilation.None() นอกจากนี้ ให้รายงานคำเตือนเมื่อแอปใช้ androidx.profileinstaller และปลั๊กอิน Android Gradle เวอร์ชันเก่า aosp/1977029

เวอร์ชัน 1.1.0-beta03

9 กุมภาพันธ์ 2022

androidx.benchmark:benchmark-*:1.1.0-beta03 เปิดตัวแล้ว เวอร์ชัน 1.1.0-beta03 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่ม AudioUnderrunMetric ลงในคลังมาโครเบนช์มาร์กภายใต้ฟีเจอร์ทดลองเพื่ออนุญาตให้ตรวจหาการขาดหายของเสียง (Ib5972)
  • BaselineProfileRule ไม่รับการบล็อก setup อีกต่อไปเนื่องจากฟังก์ชันนี้ทำงานเหมือนกับ profileBlock (Ic7dfe, b/215536447)

    เช่น

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

แก้ไขข้อบกพร่อง

  • แก้ไขปัญหาที่การติดตาม Microbench Profiler อัปเดตไม่สำเร็จในการเรียกใช้ครั้งต่อๆ ไปเมื่อลิงก์ในเอาต์พุต Studio (I5ae4d, b/214917025)
  • ป้องกันคำสั่ง Shell การคอมไพล์ใน API 23 (Ice380)
  • เปลี่ยนชื่อ FrameCpuTime -> FrameDurationCpu, FrameUiTime -> FrameDurationUi เพื่อชี้แจงว่าค่าเหล่านี้คือระยะเวลา ไม่ใช่การประทับเวลา และเพื่อให้ตรงกับคำนำหน้า (I0eba3, b/216337830)

เวอร์ชัน 1.1.0-beta02

26 มกราคม 2022

androidx.benchmark:benchmark-*:1.1.0-beta02 เปิดตัวแล้ว เวอร์ชัน 1.1.0-beta02 มีคอมมิตเหล่านี้

แก้ไขข้อบกพร่อง

  • ตอนนี้ผลลัพธ์ของ Microbenchmark Stack Sampling / ร่องรอยเมธอด Profile จะลิงก์อยู่ในเอาต์พุตของ Studio เช่นเดียวกับเอาต์พุตการจัดโปรไฟล์อื่นๆ และจะไม่ระงับเมตริกการจัดสรร (Idcb65, b/214440748, b/214253245)
  • ตอนนี้ BaselineProfileRule จะพิมพ์คำสั่ง adb pull ใน logcat และเอาต์พุตของ Studio เพื่อดึงไฟล์ข้อความ BaselineProfile ที่สร้างขึ้น (f08811)

เวอร์ชัน 1.1.0-beta01

12 มกราคม 2022

androidx.benchmark:benchmark-*:1.1.0-beta01 เปิดตัวแล้ว เวอร์ชัน 1.1.0-beta01 มีคอมมิตเหล่านี้

แก้ไขข้อบกพร่อง

  • แก้ไขการละเว้นการเปิดใช้อาร์กิวเมนต์เครื่องมือวิเคราะห์ (I37373, b/210619998)
  • นำ CompliationModes ที่เลิกใช้งานแล้วออก (I98186, b/213467659)
  • เปลี่ยนอาร์กิวเมนต์โปรไฟล์พื้นฐานของ CompilationMode.Partial เป็น enum เพื่อความชัดเจน (Id67ea)

เวอร์ชัน 1.1.0-alpha13

15 ธันวาคม 2021

androidx.benchmark:benchmark-*:1.1.0-alpha13 เปิดตัวแล้ว เวอร์ชัน 1.1.0-alpha13 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่มการติดตามระบบที่มีค่าใช้จ่ายต่ำลงในเอาต์พุตของ Microbench บน Android Q (API 29 ขึ้นไป) โปรดทราบว่าขณะนี้การดำเนินการนี้ยังไม่ได้บันทึกการติดตามที่กำหนดเอง (ผ่าน API ของ android.os.Trace หรือ androidx.tracing Jetpack) เพื่อหลีกเลี่ยงผลกระทบต่อผลลัพธ์ การติดตามนี้ควรมีประโยชน์ในการวินิจฉัยความไม่เสถียร โดยเฉพาะจากแหล่งที่มาภายนอกการเปรียบเทียบ (I298be, b/205636583, b/145598917)
  • อธิบายCompilationModesเป็น 3 ระดับ ได้แก่ เต็ม ไม่มี และบางส่วน ก่อนหน้านี้มีการตั้งชื่อที่ไม่สอดคล้องกันตามอาร์กิวเมนต์การคอมไพล์ (ซึ่งตอนนี้เราถือว่าเป็นรายละเอียดการติดตั้งใช้งาน) และฟีเจอร์ ซึ่งจะช่วยให้เห็นข้อดีข้อเสีย ชุดค่าผสมที่เป็นไปได้ และลักษณะการทำงานในเวอร์ชันต่างๆ ของแพลตฟอร์มได้ชัดเจนยิ่งขึ้น (I3d7bf, b/207132597)
  • ตอนนี้การตั้งค่าและการวัดผลจะอยู่ในคู่กันเสมอตามลำดับ ตอนนี้คุณสามารถค้นหาชื่อแพ็กเกจและการทำซ้ำได้แล้ว (แม้ว่าการทำซ้ำอาจเป็น null ในสถานการณ์การวอร์มอัพบางอย่าง) (Id3b68, b/208357448, b/208369635)

แก้ไขข้อบกพร่อง

  • แก้ไข CompilationMode.Speed ที่ได้รับการปฏิบัติอย่างไม่ถูกต้องเป็น None (I01137)

เวอร์ชัน 1.1.0-alpha12

17 พฤศจิกายน 2021

androidx.benchmark:benchmark-*:1.1.0-alpha12 เปิดตัวแล้ว เวอร์ชัน 1.1.0-alpha12 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่ม TraceSectionMetric เวอร์ชันทดลองสำหรับการวัดเวลาตามการติดตามที่กำหนดเอง (I99db1, b/204572664)

แก้ไขข้อบกพร่อง

  • ปลุกอุปกรณ์ทุกครั้งที่ทำซ้ำเพื่อให้แน่ใจว่าสามารถทดสอบ UI ได้ - ต้องปิดใช้หน้าจอล็อก (Ibfa28, b/180963442)
  • แก้ไขข้อขัดข้องหลายรายการในโหมดการสร้างโปรไฟล์ StackSampling ในโปรแกรมจำลองและอุปกรณ์ที่ไม่ได้รูท (Icdbda, b/202719335)
  • นำการหยุดชั่วคราว 0.5 วินาทีที่ส่วนท้ายของการทำซ้ำแต่ละครั้งออก หากคุณเห็นเมตริกที่ขาดหายไปจากการเปลี่ยนแปลงนี้ โปรดรายงานข้อบกพร่อง (Iff6aa)
  • ลดโอกาสที่ข้อมูลจะหาย และลดโอเวอร์เฮดของหน่วยความจำจากการติดตาม (Id2544, b/199324831, b/204448861)
  • ลดขนาดการติดตามลงประมาณ 40% โดยเปลี่ยนไปใช้รูปแบบที่เก็บข้อมูลการจัดกำหนดการแบบกะทัดรัด (Id5fb6, b/199324831)
  • อัปเดตการใช้งานเมตริกการเริ่มต้นระบบให้สิ้นสุดที่ตอนท้ายของ RenderThread เสมอ ซึ่งจะมีความสอดคล้องกันมากขึ้นในแพลตฟอร์มเวอร์ชันต่างๆ และสอดคล้องกับการวัดผลจากแอปมากขึ้น (Ic6b55)

เวอร์ชัน 1.1.0-alpha11

3 พฤศจิกายน 2021

androidx.benchmark:benchmark-*:1.1.0-alpha11 เปิดตัวแล้ว เวอร์ชัน 1.1.0-alpha11 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • ตอนนี้ Macrobenchmark มี minSdkVersion เป็น 23 (If2655)
  • เพิ่ม BaselineProfileRule เวอร์ชันทดลองใหม่ซึ่งสามารถสร้างโปรไฟล์พื้นฐานสำหรับเส้นทางของผู้ใช้ที่สำคัญของแอป เราจะจัดทำเอกสารโดยละเอียดให้ทราบต่อไป (Ibbefa, b/203692160)
  • นำตัวแปรอินเทอร์เฟซ measureRepeated ออก ซึ่งเพิ่มไว้สำหรับผู้เรียกใช้ Java เนื่องจากทำให้เกิดความกำกวมในการดำเนินการ/แก้ไขเมธอดให้เสร็จสมบูรณ์ ผู้เรียก Java จะต้องแสดงผล Unit.Instance จาก measureRepeated อีกครั้ง หากไม่สะดวก โปรดรายงานข้อบกพร่อง เราจะกลับมาพิจารณาเรื่องนี้อีกครั้งในเวอร์ชันต่อๆ ไป (Ifb23e, b/204331495)

เวอร์ชัน 1.1.0-alpha10

27 ตุลาคม 2021

androidx.benchmark:benchmark-*:1.1.0-alpha10 เปิดตัวแล้ว เวอร์ชัน 1.1.0-alpha10 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • พอร์ต StartupTimingMetric กลับไปทำงานกับ API 23 การติดตั้งใช้งานใหม่นี้ยังจัดการ reportFullyDrawn() ได้ดีขึ้นเพื่อรอจนกว่าเนื้อหาที่เกี่ยวข้องจะแสดงผล (If3ac9, b/183129298)
  • เพิ่ม JvmOverloads ลงในเมธอด MacrobenchmarkScope หลายรายการสำหรับผู้เรียกใช้ Java (I644fe, b/184546459)
  • ระบุฟังก์ชัน MacrobenchmarkRule.measureRepeated ทางเลือกที่ใช้ Consumer<MacrobenchmarkScope> เพื่อการใช้งานที่เหมาะสมในภาษา Java (If74ab, b/184546459)

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาการติดตามที่ไม่ได้เริ่มต้นเร็วพอและข้อมูลเมตริกที่ขาดหายไป ซึ่งคาดว่าจะแก้ไขข้อยกเว้น "อ่านเมตริกใดๆ ไม่ได้ ระหว่างการเปรียบเทียบ" ที่เกิดจากไลบรารีเอง (I6dfcb, b/193827052, b/200302931)
  • FrameNegativeSlack ได้เปลี่ยนชื่อเป็น FrameOverrun เพื่อให้ความหมายชัดเจนขึ้น ซึ่งก็คือเฟรมใช้งบประมาณเวลาเกินไปเท่าใด (I6c2aa, b/203008701)

เวอร์ชัน 1.1.0-alpha09

13 ตุลาคม 2021

androidx.benchmark:benchmark-*:1.1.0-alpha09 เปิดตัวแล้ว เวอร์ชัน 1.1.0-alpha09 มีคอมมิตเหล่านี้

แก้ไขข้อบกพร่อง

  • รองรับการทิ้งแคชหน้าเคอร์เนลโดยไม่ต้องรูทใน API 31/S+ ซึ่งจะเพิ่มความแม่นยำของการเปิดตัว StartupMode.COLD (Iecfdb, b/200160030)

เวอร์ชัน 1.1.0-alpha08

29 กันยายน 2021

androidx.benchmark:benchmark-*:1.1.0-alpha08 เปิดตัวแล้ว เวอร์ชัน 1.1.0-alpha08 มีคอมมิตต่อไปนี้

การเปลี่ยนแปลง API

  • เปิดใช้การเลื่อน Macrobenchmark เพื่อเรียกใช้กลับไปยัง API 23 (If39c2, b/183129298)
  • เพิ่มเมตริกตัวอย่างประเภทใหม่ลงใน UI และเอาต์พุต JSON โดยเน้นที่เปอร์เซ็นไทล์ของตัวอย่างหลายรายการต่อการทำซ้ำ (I56247, b/199940612)
  • เปลี่ยนไปใช้เมตริกจุดลอยตัวในไลบรารีการเปรียบเทียบทั้งหมด (ตัดให้สั้นลงใน UI ของ Studio) (I69249, b/197008210)

เวอร์ชัน 1.1.0-alpha07

1 กันยายน 2021

androidx.benchmark:benchmark-*:1.1.0-alpha07 เปิดตัวแล้ว เวอร์ชัน 1.1.0-alpha07 มีคอมมิตเหล่านี้

การเปลี่ยนแปลง API

  • เพิ่ม API ขั้นต่ำเป็น 21 เพื่อแสดงระดับ API ต่ำสุดที่ต้องการซึ่งจะรองรับในอนาคต API ขั้นต่ำที่รองรับในปัจจุบันจะยังคงได้รับการถ่ายทอดผ่าน RequiredApi() และปัจจุบันอยู่ที่ 29 (I440d6, b/183129298)

แก้ไขข้อบกพร่อง

  • แก้ไข ProfileInstaller เพื่อให้แอปที่ใช้โปรไฟล์พื้นฐานเรียกใช้ MacroBenchmark โดยใช้ CompilationMode.BaselineProfile ได้ง่ายขึ้น (I42657, b/196074999) หมายเหตุ: ต้องอัปเดตเป็น androidx.profileinstaller:profileinstaller:1.1.0-alpha04 ขึ้นไปด้วย
  • StartupMode.COLD และการเปรียบเทียบอีก CompilationMode.None รายการมีความเสถียรมากขึ้นแล้ว (I770cd, b/196074999)

เวอร์ชัน 1.1.0-alpha06

18 สิงหาคม 2021

androidx.benchmark:benchmark-*:1.1.0-alpha06 เปิดตัวแล้ว เวอร์ชัน 1.1.0-alpha06 มีคอมมิตต่อไปนี้

การเปลี่ยนแปลง API

  • เพิ่มอาร์กิวเมนต์การวัดคุม androidx.benchmark.iterations เพื่ออนุญาตให้ลบล้างจำนวนการทำซ้ำด้วยตนเองเมื่อทดสอบ/ทำโปรไฟล์ในเครื่อง (6188be, b/194137879)

แก้ไขข้อบกพร่อง

  • เปลี่ยนไปใช้ Simpleperf เป็นเครื่องมือสร้างโปรไฟล์แบบสุ่มเริ่มต้นใน API 29 ขึ้นไป (Ic4b34, b/158303822)

ปัญหาที่ทราบ

  • CompilationMode.BaselineProfile ยังอยู่ระหว่างการพัฒนา โปรดอย่าใช้คะแนนนี้เพื่อพิจารณาว่าโปรไฟล์ดีเพียงใดในตอนนี้

เวอร์ชัน 1.1.0-alpha05

4 สิงหาคม 2021

androidx.benchmark:benchmark-*:1.1.0-alpha05 เปิดตัวแล้ว เวอร์ชัน 1.1.0-alpha05 มีคอมมิตต่อไปนี้

1.1.0-alpha04 ถูกยกเลิกก่อนเผยแพร่เนื่องจากเกิดข้อขัดข้องเป็นครั้งคราว b/193827052

การเปลี่ยนแปลง API

  • เปลี่ยนไปใช้ startActivityAndWait เพื่อเรียกใช้การเปิดผ่าน am start ซึ่งจะช่วยลด เวลาของการทำซ้ำการวัดแต่ละครั้งลงประมาณ 5 วินาที โดยจะไม่รองรับ Intent Parcelable อีกต่อไป (I5a6f5, b/192009149

แก้ไขข้อบกพร่อง

  • ลดความเข้มงวดในการตรวจจับการควบคุมปริมาณความร้อน และคำนวณเกณฑ์พื้นฐานใหม่หากตรวจพบการควบคุมปริมาณบ่อยครั้ง (I7327b)
  • แก้ไข FrameTimingMetric ให้ทำงานใน Android S เวอร์ชันเบต้า (Ib60cc, b/193260119)
  • ใช้ EmptyActivity เพื่อนำแอปเป้าหมายออกจากสถานะบังคับให้หยุดเพื่อรองรับ CompilationMode.BaselineProfile ได้ดียิ่งขึ้น (Id7cac, b/192084204)
  • เปลี่ยนนามสกุลไฟล์การติดตามเป็น .perfetto-trace เพื่อให้ตรงกับมาตรฐานแพลตฟอร์ม (I4c236, b/174663039)
  • ตอนนี้ StartupTimingMetric จะแสดงผลเมตริก "fullyDrawnMs" เพื่อวัดเวลาจนกว่าแอปพลิเคชันจะแสดงผลเสร็จสมบูรณ์ หากต้องการ กำหนดเมตริกนี้สำหรับแอป ให้เรียกใช้ Activity.reportFullyDrawn เมื่อ เนื้อหาเริ่มต้นพร้อมใช้งาน เช่น เมื่อโหลดรายการเริ่มต้นจาก DB หรือเครือข่าย (เมธอด reportFullyDrawn พร้อมใช้งานโดยไม่ต้องตรวจสอบเวอร์ชันบิลด์ใน ComponentActivity) โปรดทราบว่าการทดสอบต้องทำงานนานพอที่จะบันทึกเมตริก (startActivityAndWait ไม่รอ reportFullyDrawn) (If1141, b/179176560)
  • ลดต้นทุนในการเพิ่มข้อมูลเมตาของ UI ลงในเทรซได้มากกว่า 50 มิลลิวินาที (Ic8390, b/193923003)
  • เพิ่มความถี่ในการโพลอย่างมากเมื่อหยุดการติดตาม ซึ่งสามารถลดรันไทม์ของเกณฑ์เปรียบเทียบการเริ่มต้นลงได้ 30% ขึ้นไป (Idfbc1, b/193723768)

เวอร์ชัน 1.1.0-alpha03

16 มิถุนายน 2021

androidx.benchmark:benchmark-*:1.1.0-alpha03 เปิดตัวแล้ว เวอร์ชัน 1.1.0-alpha03 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

แก้ไขข้อบกพร่อง

  • โค้ด Gradle ตัวอย่างสำหรับการระงับข้อผิดพลาดของ Benchmark ได้รับการอัปเดตให้ใช้ API ที่ไม่เลิกใช้งานแล้วซึ่งมีไวยากรณ์ที่รองรับผู้ใช้ .gradle.kts ด้วย

    เช่น

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

เวอร์ชัน 1.1.0-alpha02

18 พฤษภาคม 2021

การเปรียบเทียบเวอร์ชัน 1.1.0-alpha02 มีองค์ประกอบสำคัญในการเปรียบเทียบ นั่นคือ Macrobenchmark นอกจาก benchmark จะช่วยให้คุณวัดลูป CPU ได้แล้ว macrobenchmark ยังช่วยให้คุณวัดการโต้ตอบทั้งแอป เช่น การเริ่มต้นและการเลื่อน รวมถึงบันทึกการติดตามได้ด้วย ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของไลบรารี

androidx.benchmark:benchmark-*:1.1.0-alpha02 เปิดตัวแล้ว เวอร์ชัน 1.1.0-alpha02 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

เพิ่มอาร์ติแฟกต์ Macrobenchmark แล้ว (androidx.benchmark:benchmark-macro-junit4 และ androidx.benchmark:benchmark-macro)

  • บันทึกเมตริกประสิทธิภาพการเริ่มต้น การเลื่อน/ภาพเคลื่อนไหวจากแอป ไม่ว่าจะในเครื่องหรือใน CI
  • บันทึกและตรวจสอบการติดตามจากภายใน Android Studio

การแก้ไขข้อบกพร่อง

  • วิธีแก้ปัญหาเกี่ยวกับสิทธิ์ของเชลล์ที่มีไดเรกทอรีเอาต์พุตใน Android 12 (หมายเหตุ - อาจต้องอัปเดตปลั๊กอิน Android Gradle เป็น 7.0.0 Canary และ Android Studio เป็น Arctic Fox (2020.3.1) เพื่อบันทึกไฟล์เอาต์พุตต่อไปในอุปกรณ์ที่ได้รับผลกระทบ) (Icb039)
  • รองรับการแคชการกำหนดค่าใน BenchmarkPlugin (6be1c1, b/159804788)
  • เอาต์พุตไฟล์แบบง่าย - เปิดอยู่โดยค่าเริ่มต้น ในไดเรกทอรีที่ไม่ต้องใช้ requestLegacyExternalStorage=true (8b5a4d, b/172376362)
  • แก้ไขคำเตือน Logcat ของการพิมพ์ไลบรารีเกี่ยวกับการไม่พบ เธรด JIT ในเวอร์ชันแพลตฟอร์มที่ไม่มีเธรดดังกล่าว (I9cc63, b/161847393)
  • แก้ไขความถี่สูงสุดของอุปกรณ์อ่าน (I55c7a)

เวอร์ชัน 1.1.0-alpha01

10 มิถุนายน 2020

androidx.benchmark:benchmark-common:1.1.0-alpha01, androidx.benchmark:benchmark-gradle-plugin:1.1.0-alpha01 และ androidx.benchmark:benchmark-junit4:1.1.0-alpha01 เวอร์ชัน 1.1.0-alpha01 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่ของ 1.1

  • เมตริกการจัดสรร - ตอนนี้การเปรียบเทียบจะเรียกใช้ระยะเพิ่มเติมหลังจากวอร์มอัพและกำหนดเวลา โดยจะบันทึกจำนวนการจัดสรร การจัดสรรอาจทำให้เกิดปัญหาด้านประสิทธิภาพในแพลตฟอร์มเวอร์ชันเก่า (140ns ใน O กลายเป็น 8ns ใน M - วัดใน Nexus5X โดยมีนาฬิกาที่ล็อกไว้) เมตริกนี้จะแสดงในเอาต์พุตของคอนโซล Android Studio รวมถึงใน
  • การรองรับการทำโปรไฟล์ - ตอนนี้คุณสามารถบันทึกข้อมูลการทำโปรไฟล์สำหรับการเรียกใช้การเปรียบเทียบเพื่อตรวจสอบสาเหตุที่โค้ดอาจทำงานช้าได้แล้ว การเปรียบเทียบรองรับการบันทึกร่องรอยเมธอดหรือการสุ่มตัวอย่างเมธอดจาก ART ไฟล์เหล่านี้ตรวจสอบได้ด้วยเครื่องมือวิเคราะห์ภายใน Android Studio โดยใช้ไฟล์ > เปิด
  • ตอนนี้ปลั๊กอิน Gradle สำหรับการเปรียบเทียบมีค่าเริ่มต้นเพื่อให้ตั้งค่าได้ง่ายขึ้น ดังนี้
    • testBuildType ได้รับการตั้งค่าให้เผยแพร่โดยค่าเริ่มต้น เพื่อหลีกเลี่ยงการใช้ทรัพยากร Dependency ที่มีการครอบคลุมของโค้ดในตัว นอกจากนี้ ระบบยังกำหนดค่า buildType ของรุ่นเป็น buildType เริ่มต้นด้วย ซึ่งช่วยให้ Android Studio เลือกตัวแปรบิลด์ที่ถูกต้องโดยอัตโนมัติเมื่อเปิดโปรเจ็กต์เป็นครั้งแรก (b/138808399)
    • signingConfig.debug ใช้เป็นการกำหนดค่าการลงนามเริ่มต้น (b/153583269)

** แก้ไขข้อบกพร่อง **

  • ลดค่าใช้จ่ายในการเปลี่ยนผ่านช่วงวอร์มอัพลงอย่างมาก โดยที่การวัดผลครั้งแรกสำหรับแต่ละการเปรียบเทียบสูงกว่าการวัดผลอื่นๆ โดยไม่เป็นไปตามธรรมชาติ ปัญหานี้จะเห็นได้ชัดเจนมากขึ้นในการทดสอบประสิทธิภาพขนาดเล็กมาก (1 ไมโครวินาทีหรือน้อยกว่า) (b/142058671)
  • แก้ไขInstrumentationResultParserข้อผิดพลาดที่พิมพ์สำหรับเกณฑ์มาตรฐานแต่ละรายการเมื่อเรียกใช้จากบรรทัดคำสั่ง (I64988, b/154248456)

ปัญหาที่ทราบ

  • บรรทัดคำสั่ง การเรียกใช้ Gradle ของ Benchmark จะไม่พิมพ์ผลลัพธ์โดยตรง คุณสามารถหลีกเลี่ยงปัญหานี้ได้โดยการเรียกใช้ผ่าน Studio หรือแยกวิเคราะห์ไฟล์เอาต์พุต JSON เพื่อดูผลลัพธ์
  • การรายงานการเปรียบเทียบไม่สามารถดึงรายงานจากอุปกรณ์ที่ติดตั้งแอปซึ่งมี applicationId ที่ลงท้ายด้วย "android" หรือ "download" (ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) ผู้ใช้ที่พบปัญหานี้ควรอัปเกรดปลั๊กอิน Android Gradle เป็น 4.2-alpha01 ขึ้นไป

เวอร์ชัน 1.0.0

เกณฑ์เปรียบเทียบเวอร์ชัน 1.0.0

20 พฤศจิกายน 2019

androidx.benchmark:benchmark-common:1.0.0, androidx.benchmark:benchmark-gradle-plugin:1.0.0 และ androidx.benchmark:benchmark-junit4:1.0.0 เปิดตัวโดยไม่มีการเปลี่ยนแปลงจาก 1.0.0-rc01 เวอร์ชัน 1.0.0 มีคอมมิตเหล่านี้

ฟีเจอร์หลักของ 1.0.0

คลังข้อมูลเปรียบเทียบช่วยให้คุณเขียนข้อมูลเปรียบเทียบประสิทธิภาพของโค้ดแอปและรับผลลัพธ์ได้อย่างรวดเร็ว

ซึ่งจะช่วยป้องกันปัญหาการกำหนดค่าบิลด์และรันไทม์ รวมถึงทำให้ประสิทธิภาพของอุปกรณ์มีความเสถียรเพื่อให้มั่นใจว่าการวัดผลจะถูกต้องและสอดคล้องกัน เรียกใช้การเปรียบเทียบใน Android Studio โดยตรงหรือในการรวมอย่างต่อเนื่องเพื่อสังเกตประสิทธิภาพของโค้ดเมื่อเวลาผ่านไป และเพื่อป้องกันการถดถอย

ฟีเจอร์หลักๆ มีดังนี้

  • การปรับนาฬิกาให้เสถียร
  • การจัดลำดับความสำคัญของชุดข้อความโดยอัตโนมัติ
  • รองรับการทดสอบประสิทธิภาพ UI เช่น ใน RecyclerView Sample
  • การวอร์มอัปและการวนซ้ำที่รองรับ JIT
  • เอาต์พุตการเปรียบเทียบ JSON สำหรับการประมวลผลภายหลัง

เวอร์ชัน 1.0.0-rc01

23 ตุลาคม 2019

androidx.benchmark:benchmark-common:1.0.0-rc01, androidx.benchmark:benchmark-gradle-plugin:1.0.0-rc01 และ androidx.benchmark:benchmark-junit4:1.0.0-rc01 เวอร์ชัน 1.0.0-rc01 มีคอมมิตต่อไปนี้

ฟีเจอร์ใหม่

  • เพิ่มการติดตาม systrace ลงในการเปรียบเทียบ

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาความไม่เสถียรของเมตริกที่ JIT ไม่เสร็จก่อนวอร์มอัปเนื่องจากการลดลำดับความสำคัญ (b/140773023)
  • ไดเรกทอรีเอาต์พุต JSON แบบรวมในปลั๊กอิน Android Gradle 3.5 และ 3.6

เวอร์ชัน 1.0.0-beta01

9 ตุลาคม 2019

androidx.benchmark:benchmark-common:1.0.0-beta01, androidx.benchmark:benchmark-gradle-plugin:1.0.0-beta01 และ androidx.benchmark:benchmark-junit4:1.0.0-beta01 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-beta01 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เรียกใช้ระบบจัดการหน่วยความจำที่ไม่ใช้แล้วก่อนการวอร์มอัปแต่ละครั้งเพื่อลดแรงกดดันด้านหน่วยความจำจากการเปรียบเทียบหนึ่งไปยังอีกการเปรียบเทียบหนึ่ง (b/140895105)

การแก้ไขข้อบกพร่อง

  • เพิ่มทรัพยากร Dependency androidx.annotation:android-experimental-lint เพื่อให้โค้ด Java สร้างข้อผิดพลาด Lint อย่างถูกต้องเมื่อไม่ได้ใช้ API เวอร์ชันทดลอง ซึ่งคล้ายกับสิ่งที่ Kotlin Experimental Annotation มีให้สำหรับผู้เรียก Kotlin
  • ตอนนี้จะตรวจหาการใช้อาร์กิวเมนต์การวัด additionalTestOutputDir สำหรับเอาต์พุตในปลั๊กอิน Android Gradle 3.6 ได้อย่างถูกต้อง เพื่อให้ทราบว่า AGP จะจัดการการคัดลอกข้อมูลเมื่อใด
  • แก้ไขความถี่สัญญาณนาฬิกาที่ตรวจไม่พบใน JSON เพื่อพิมพ์ -1 อย่างถูกต้อง (b/141945670)

เวอร์ชัน 1.0.0-alpha06

18 กันยายน 2019

androidx.benchmark:benchmark-common:1.0.0-alpha06, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha06 และ androidx.benchmark:benchmark-junit4:1.0.0-alpha06 ได้รับการเผยแพร่แล้ว เวอร์ชัน 1.0.0-alpha06 มีคอมมิตเหล่านี้

ฟีเจอร์ใหม่

  • เพิ่มการตรวจสอบการใช้แพ็กเกจเก่าอย่างไม่ถูกต้องสำหรับ Test Runner ซึ่งตอนนี้จะแสดงข้อความแสดงข้อผิดพลาดที่เป็นประโยชน์มากขึ้น

การเปลี่ยนแปลง API

  • ตอนนี้คำอธิบายประกอบเวอร์ชันทดลอง ExperimentalAnnotationReport เป็นแบบสาธารณะอย่างถูกต้องแล้ว ตอนนี้การใช้ API BenchmarkState#report เวอร์ชันทดลองต้องใช้คำอธิบายประกอบนี้

เวอร์ชัน 1.0.0-alpha05

5 กันยายน 2019

androidx.benchmark:benchmark-common:1.0.0-alpha05, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha05 และ androidx.benchmark:benchmark-junit4:1.0.0-alpha05 ได้รับการเผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

การเปลี่ยนแปลง API

  • ตอนนี้ BenchmarkState.reportData API มีสถานะเป็นเวอร์ชันทดลองแล้ว

การแก้ไขข้อบกพร่อง

  • แก้ไขสคริปต์การล็อกนาฬิกา ซึ่งจะทำงานไม่สำเร็จในอุปกรณ์ที่ไม่มีเครื่องมืออรรถประโยชน์ Shell cut หรือ expr
  • แก้ไขปัญหาเกี่ยวกับงาน ./gradlew lockClocks ที่ค้างในอุปกรณ์ที่รูทด้วยยูทิลิตี su เวอร์ชันเก่าซึ่งไม่รองรับแฟล็ก -c

เวอร์ชัน 1.0.0-alpha04

7 สิงหาคม 2019

androidx.benchmark:benchmark-common:1.0.0-alpha04, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha04 และ androidx.benchmark:benchmark-junit4:1.0.0-alpha04 ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

นอกจากนี้ เรายังเพิ่มเอกสารประกอบใหม่เกี่ยวกับวิธีใช้ไลบรารีการเปรียบเทียบโดยไม่มี Gradle ทั้งสำหรับการใช้งานกับระบบบิลด์ต่างๆ (เช่น Bazel หรือ Buck) และเมื่อทำงานใน CI ดูข้อมูลเพิ่มเติมได้ที่สร้างการเปรียบเทียบโดยไม่ใช้ Gradle และเรียกใช้การเปรียบเทียบในการรวมอย่างต่อเนื่อง

ฟีเจอร์ใหม่

  • ปลั๊กอิน Gradle
    • ตอนนี้จะปิดใช้ความครอบคลุมของการทดสอบโดยอัตโนมัติ และตั้งค่า AndroidBenchmarkRunner โดยค่าเริ่มต้น (b/138374050)
    • เพิ่มการรองรับการคัดลอกข้อมูลแบบใหม่ที่อิงตาม AGP เมื่อเรียกใช้การเปรียบเทียบและเมื่อใช้ AGP 3.6 ขึ้นไป
  • การเพิ่มรูปแบบ JSON
    • แสดงเวลารวมในการรันทดสอบการเปรียบเทียบ (b/133147694)
    • ตอนนี้การเปรียบเทียบ @Parameterized ที่ใช้สตริงชื่อ (เช่น @Parameters(name = "size={0},depth={1}")) จะแสดงชื่อและค่าของพารามิเตอร์ต่อการเปรียบเทียบในเอาต์พุต JSON (b/132578772)
  • โหมดทดลองเรียกใช้ (b/138785848)
    • เพิ่มโหมด "ทดลองใช้" สำหรับการเรียกใช้การเปรียบเทียบแต่ละรอบเพียงครั้งเดียว เพื่อตรวจสอบข้อผิดพลาด/ข้อขัดข้องโดยไม่ต้องบันทึกการวัด ซึ่งจะเป็นประโยชน์ เช่น สำหรับการเรียกใช้การเปรียบเทียบอย่างรวดเร็วในการส่งล่วงหน้าเพื่อตรวจสอบว่าไม่ได้เสียหาย

การเปลี่ยนแปลง API

  • โครงสร้างโมดูลมีการเปลี่ยนแปลงโดยแยกไลบรารี (b/138451391)
    • benchmark:benchmark-junit4 มีคลาสที่มีทรัพยากร Dependency ของ JUnit: AndroidBenchmarkRunner และ BenchmarkRule ซึ่งทั้ง 2 คลาสได้ย้ายไปยังแพ็กเกจ androidx.benchmark.junit4 แล้ว
    • benchmark:benchmark-common มีตรรกะที่เหลือ ซึ่งรวมถึง BenchmarkState API
    • การแยกนี้จะช่วยให้ไลบรารีรองรับการเปรียบเทียบโดยไม่มี JUnit4 API ในอนาคต
  • ตอนนี้ระบบจะถือว่าคำเตือนการกำหนดค่าเป็นข้อผิดพลาด และจะทำให้การทดสอบขัดข้อง (b/137653596)
    • การดำเนินการนี้มีขึ้นเพื่อกระตุ้นให้เกิดการวัดผลที่แม่นยำยิ่งขึ้น โดยเฉพาะใน CI
    • ข้อผิดพลาดเหล่านี้สามารถลดกลับไปเป็นคำเตือนได้ด้วยอาร์กิวเมนต์การวัดผล ตัวอย่างเช่น -e androidx.benchmark.suppressErrors "DEBUGGABLE,LOW_BATTERY"

การแก้ไขข้อบกพร่อง

  • ข้อผิดพลาดเมื่อเขียนไปยังที่จัดเก็บข้อมูลภายนอกในอุปกรณ์ Q จะแสดงข้อความที่อธิบายได้ชัดเจนยิ่งขึ้น พร้อมคำแนะนำเกี่ยวกับวิธีแก้ไขปัญหา
  • หน้าจอจะเปิดโดยอัตโนมัติระหว่างการเรียกใช้การเปรียบเทียบ แทนที่จะไม่ทำงานเมื่อหน้าจอปิดอยู่

การมีส่วนร่วมจากภายนอก

  • ขอขอบคุณ Sergey Zakharov ที่ช่วยปรับปรุงเอาต์พุต JSON และแก้ไขปัญหาหน้าจอปิด

เวอร์ชัน 1.0.0-alpha03

2 กรกฎาคม 2019

androidx.benchmark:benchmark:1.0.0-alpha03 และ androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha03 เปิดตัวแล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

ฟีเจอร์ใหม่

  • เปิดเผยระยะเวลาการนอนหลับเนื่องจากการควบคุมปริมาณความร้อนต่อการเปรียบเทียบในรายงาน JSON ฉบับเต็ม

การแก้ไขข้อบกพร่อง

  • ไม่จำเป็นต้องใช้ปลั๊กอิน Gradle หลังจากปลั๊กอิน Android และบล็อก Android อีกต่อไป
  • เพิ่มการรองรับรายงานการเปรียบเทียบในอุปกรณ์ Android 10 ที่ใช้พื้นที่เก็บข้อมูลที่จำกัดขอบเขต

เวอร์ชัน 1.0.0-alpha02

6 มิถุนายน 2019

androidx.benchmark:1.0.0-alpha02 และ androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha02 เปิดตัวแล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่

โปรดทราบว่าเราถือว่าสคีมา JSON เป็น API เราวางแผนที่จะปฏิบัติตามข้อจำกัดด้านความเสถียรเช่นเดียวกับ API อื่นๆ นั่นคือ เสถียร (มีข้อยกเว้นน้อยมาก) เมื่ออยู่ในเวอร์ชันเบต้า และแก้ไขในการเปิดตัวเวอร์ชันสุดท้าย โดยจะมีการเพิ่มเฉพาะในการเปิดตัวเวอร์ชันย่อย และมีการเปลี่ยนแปลง/นำออกในการเปิดตัวเวอร์ชันหลัก

การเปลี่ยนแปลง API

  • ปรับปรุงสคีมา JSON ใหม่ การเปลี่ยนแปลงเพิ่มเติมในสคีมา JSON มีแนวโน้มที่จะ จำกัดอยู่แค่การเพิ่มข้อมูล

    • จัดระเบียบโครงสร้างออบเจ็กต์ผลลัพธ์ใหม่เพื่อรองรับกลุ่มเมตริกเพิ่มเติมในอนาคต (b/132713021)
    • เพิ่มข้อมูลบริบทการทดสอบ เช่น ข้อมูลอุปกรณ์และบิลด์ และการล็อกนาฬิกาหรือไม่ ไปยังออบเจ็กต์ระดับบนสุด (b/132711920)
    • ตอนนี้ชื่อเมตริกเวลาจะมี "ns" อยู่ในชื่อ (b/132714527)
    • เพิ่มสถิติเพิ่มเติมต่อเมตริกการรายงาน (สูงสุด ค่ามัธยฐาน ต่ำสุด) และนำสถิติสรุป "nanos" แบบง่ายออก (b/132713851)
  • นำเอาต์พุต XML ออก (b/132714414)

  • นำการตรวจจับการควบคุมปริมาณความร้อนออกจาก BenchmarkState.reportData API (b/132887006)

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาที่ ./gradlew lockClocks ไม่ทำงานในอุปกรณ์ที่ใช้ระบบปฏิบัติการเวอร์ชันล่าสุดบางรุ่น (b/133424037)
  • ปิดใช้การตรวจหาการควบคุมสำหรับโปรแกรมจำลอง (b/132880807)

เวอร์ชัน 1.0.0-alpha01

7 พฤษภาคม 2019

androidx.benchmark:benchmark:1.0.0-alpha01 เปิดตัวแล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่