การเปรียบเทียบ
| อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | รุ่นอัลฟ่า |
|---|---|---|---|---|
| 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 ใช้
UiAutomator2.4 เพื่อลดความซับซ้อนในการโต้ตอบกับแอปพลิเคชันที่วัดผล ตอนนี้ออบเจ็กต์ MacrobenchmarkScope จะขยาย UiAutomatorTestScope ซึ่งช่วยให้คุณใช้UiAutomatorAPI ที่ทันสมัย เช่นonElement { ... }.click()ได้ - ดูข้อมูลเพิ่มเติมเกี่ยวกับ
UiAutomator2.4 ได้ที่เอกสารประกอบ
ฟีเจอร์ใหม่
- ปลั๊กอิน Gradle ของโปรไฟล์พื้นฐานไม่จำเป็นต้องใช้
newDsl=falseใน AGP 9.0 อีกต่อไป (Iaaac7, b/443311090) - ขยายการกำหนดค่าการติดตามให้รวมขนาดคอร์ (เช่น เล็ก/ใหญ่) ในการติดตามระบบ/Perfetto ที่บันทึกไว้ในการเปรียบเทียบ (I8e397, b/457469959)
การเปลี่ยนแปลง API
- (ใน UiAutomator) เปลี่ยน
startActivitywait เป็น wait for new window (I35da6, b/440021797) - ทำให้
BlackHoleAPI ใน 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 เนื่องจากการเปลี่ยนแปลงใน
pgreptoybox ที่ตอนนี้ต้องใช้-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ที่มีป้ายกำกับ "Expectedpm dump-profilesstdout" ซึ่งเกิดจากการตรวจสอบรูปแบบเอาต์พุตที่เข้มงวดเกินไป (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ใหม่ APITraceProcessorใหม่ทำงานเหมือนกับ 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()มีประสิทธิภาพไม่สอดคล้องกันซึ่งไม่ได้แสดงถึงประสิทธิภาพเริ่มต้นที่แย่ที่สุด วิธีนี้ใช้เพื่อหลีกเลี่ยงการเปลี่ยนแปลงแพลตฟอร์มที่อนุญาตให้สถานะการคอมไพล์ของ ARTverifyคอมไพล์แอปบางส่วน (มีผลกับการโหลดคลาสเท่านั้น) หลังจากเปิดใช้ครั้งแรกไม่นาน (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ซึ่งต้องใช้รูทในแพลตฟอร์มส่วนใหญ่) เข้าถึงผ่านInstrumentationArgumentandroidx.benchmark.cpuEventCounter.enable(ตั้งค่าเป็นtrueได้) และตั้งค่าandroidx.benchmark.cpuEventCounter.eventsได้ เช่น เป็น (Instructions,CpuCycles) ฟีเจอร์นี้ควรได้รับการรองรับในโปรแกรมจำลอง userdebug บางโปรแกรม แต่ยังไม่มีการทดสอบการรองรับในโปรแกรมจำลองทั้งหมดที่มีอยู่
- ฟีเจอร์ตัวนับเหตุการณ์ CPU เวอร์ชันทดลอง (เมตริกจาก
การเปลี่ยนแปลงใน 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 รายการเพื่อลบล้างลักษณะการทิ้งตัวปรับเฉดสีเพื่อแก้ปัญหาข้อขัดข้องเมื่อเปรียบเทียบแอปโดยไม่มี
ProfileInstaller1.3:androidx.benchmark.dropShaders.enable=true/false: ใช้เพื่อข้ามการทิ้งตัวปรับเฉดสีทั้งหมด (รวมถึงการทิ้งตัวปรับเฉดสีที่ทำในการเปิดStartupMode.Cold) โดยเฉพาะเมื่อทำการเปรียบเทียบแอปที่ยังไม่ได้ใช้ profileinstaller 1.3androidx.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)
- Power - เพิ่ม
การจับภาพโปรไฟล์พื้นฐาน / การเปลี่ยนแปลงปลั๊กอิน 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.queryMetricsAPI ที่มีรูปแบบ 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.IDcontext.build.version.codename- เท่ากับ android.os.Build.VERSION.CODENAMEcontext.build.version.abbreviatedCodename- สอดคล้องกับตัวอักษรตัวแรกของชื่อเวอร์ชันรุ่นทดลอง (รวมถึงในบิลด์ที่เผยแพร่) (Ie5020)
- เพิ่มรายการ
profilerOutputลงในเอาต์พุต JSON เพื่อให้ใช้เครื่องมือต่างๆ เกี่ยวกับร่องรอยการทำโปรไฟล์ได้ง่ายขึ้น (เช่น Perfetto, ร่องรอยของเมธอด) (I05ddd, b/332604449) - เพิ่มคำเตือนเมื่อใช้ Android Test Orchestrator ในโมดูลการเปรียบเทียบ เนื่องจากจะทำให้ไฟล์ JSON เอาต์พุตต่อโมดูลถูกเขียนทับซ้ำๆ (Ia1af6, b/286899049)
- ส่งข้อยกเว้นเมื่อชื่อไฟล์ยาวกว่า 200 อักขระเพื่อหลีกเลี่ยงข้อขัดข้องที่ไม่ชัดเจนเมื่อเขียนหรือประมวลผลไฟล์หลังการประมวลผล (I4a5ab)
- เพิ่มข้อมูลเพิ่มเติมในบริบทการเปรียบเทียบในเอาต์พุต JSON ดังนี้
เวอร์ชัน 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.IDcontext.build.version.codename- เท่ากับandroid.os.Build.VERSION.CODENAMEcontext.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.queryMetricsAPI ที่มีตัวแปร 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) - การเปลี่ยนแปลงหลายอย่างใน
TraceSectionMetricAPI มีดังนี้- เพิ่ม
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 รายการเพื่อลบล้างลักษณะการทิ้งตัวปรับเฉดสีเพื่อแก้ปัญหาข้อขัดข้องเมื่อเปรียบเทียบแอปโดยไม่มี
ProfileInstaller1.3:androidx.benchmark.dropShaders.enable=true/false: ใช้เพื่อข้ามการทิ้งตัวปรับเฉดสีทั้งหมด (รวมถึงการทิ้งตัวปรับเฉดสีที่ทำในการเปิดStartupMode.Cold) โดยเฉพาะเมื่อทำการเปรียบเทียบแอปที่ยังไม่ได้ใช้ profileinstaller 1.3androidx.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ตอนนี้เสถียรแล้ว ซึ่งเป็น APIBaselineProfileRule.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 ต้องใช้
ProfileInstaller1.3.0 ขึ้นไปในแอปเป้าหมายเพื่อเปิดใช้การบันทึก / รีเซ็ตโปรไฟล์และการล้างแคชตัวปรับเฉดสี
- ตอนนี้ Macrobenchmark ต้องใช้
Metric API เวอร์ชันทดลองใหม่
- เพิ่ม
TraceSectionMetricเวอร์ชันทดลอง ซึ่งช่วยให้ดึงการจับเวลาอย่างง่ายจากบล็อกtrace("") {}ในแอป หรือ TraceMetric เพื่อใช้ประโยชน์จากความสามารถในการค้นหาทั้งหมดของ PerfettoTraceProcessor - เพิ่ม
PowerMetricเวอร์ชันทดลองเพื่อบันทึกข้อมูลการใช้พลังงาน - เพิ่ม
MemoryCountersMetricเวอร์ชันทดลองเพื่อนับข้อผิดพลาดของหน้า - เพิ่ม
PerfettoTraceProcessorAPI เวอร์ชันทดลอง ซึ่งใช้ภายในเพื่อดึงข้อมูลเมตริกจากการติดตามระบบ (หรือที่เรียกว่าการติดตาม 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 การเปรียบเทียบ
- เพิ่ม 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
collectBaselineProfileAPI จะสร้างโปรไฟล์พื้นฐานที่เสถียรเสมอ เราได้นำcollectStableBaselineProfileAPI ออกแล้ว และควรใช้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)
- เพิ่ม
TraceMetricAPI เวอร์ชันทดลองใหม่สำหรับการกำหนดเมตริกที่กำหนดเองอย่างเต็มรูปแบบตามเนื้อหาของร่องรอย 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
- เพิ่ม
PowerMetricAPI สำหรับวัดพลังงานและกำลังไฟใน 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
การรองรับ Jetpack Macrobenchmark ซึ่งช่วยให้คุณวัดการโต้ตอบทั้งแอป เช่น การเริ่มต้นและการเลื่อน จะให้ความสามารถในการบันทึกการติดตามและวัดส่วนการติดตาม
การรองรับโปรไฟล์พื้นฐาน
CompilationMode.Partialเพื่อวัดประสิทธิภาพของโปรไฟล์พื้นฐาน@BaselineProfileRuleเพื่อสร้างโปรไฟล์พื้นฐานโดยอัตโนมัติสำหรับเส้นทางของผู้ใช้ที่สําคัญที่กําหนด
การรองรับเมตริกการจัดสรรและการทำโปรไฟล์ระหว่างการเรียกใช้ Microbenchmark
เวอร์ชัน 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.tracingJetpack) เพื่อหลีกเลี่ยงผลกระทบต่อผลลัพธ์ การติดตามนี้ควรมีประโยชน์ในการวินิจฉัยความไม่เสถียร โดยเฉพาะจากแหล่งที่มาภายนอกการเปรียบเทียบ (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 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่ม
CompilationMode.BaselineProfileใหม่เพื่อรองรับโปรไฟล์ที่ติดตั้งโดยใช้ไลบรารี Jetpack ProfileInstaller (aosp/1720930)
แก้ไขข้อบกพร่อง
โค้ด 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.reportDataAPI มีสถานะเป็นเวอร์ชันทดลองแล้ว
การแก้ไขข้อบกพร่อง
- แก้ไขสคริปต์การล็อกนาฬิกา ซึ่งจะทำงานไม่สำเร็จในอุปกรณ์ที่ไม่มีเครื่องมืออรรถประโยชน์ 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.reportDataAPI (b/132887006)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่
./gradlew lockClocksไม่ทำงานในอุปกรณ์ที่ใช้ระบบปฏิบัติการเวอร์ชันล่าสุดบางรุ่น (b/133424037) - ปิดใช้การตรวจหาการควบคุมสำหรับโปรแกรมจำลอง (b/132880807)
เวอร์ชัน 1.0.0-alpha01
7 พฤษภาคม 2019
androidx.benchmark:benchmark:1.0.0-alpha01 เปิดตัวแล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่