เปรียบเทียบ
อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | เวอร์ชันอัลฟ่า |
---|---|---|---|---|
7 พฤษภาคม 2025 | 1.3.4 | - | 1.4.0-beta01 | - |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มทรัพยากร Dependency ของ Benchmark คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมในที่เก็บ Maven ของ Google
Macrobenchmark
หากต้องการใช้ Macrobenchmark ในโปรเจ็กต์ ให้เพิ่มการพึ่งพาต่อไปนี้ลงในไฟล์ build.gradle
สำหรับโมดูล macrobenchmark
Groovy
dependencies { androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.3.4" }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-macro-junit4:1.3.4") }
การทดสอบประสิทธิภาพระดับไมโคร
หากต้องการใช้ Microbenchmark ในโปรเจ็กต์ ให้เพิ่มข้อกําหนดต่อไปนี้ลงในไฟล์ build.gradle
ของโมดูล Microbenchmark
Groovy
dependencies { androidTestImplementation "androidx.benchmark:benchmark-junit4:1.3.4" } android { ... defaultConfig { ... testInstrumentationRunner "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
Kotlin
dependencies { androidTestImplementation("androidx.benchmark:benchmark-junit4:1.3.4") } android { ... defaultConfig { ... testInstrumentationRunner = "androidx.benchmark.junit4.AndroidBenchmarkRunner" } }
ไลบรารี Microbenchmark ยังมีปลั๊กอิน Gradle สำหรับใช้กับโมดูล Microbenchmark ด้วย
ปลั๊กอินนี้จะตั้งค่าการกําหนดค่าบิลด์เริ่มต้นสําหรับโมดูล ตั้งค่าการคัดลอกเอาต์พุตการเปรียบเทียบไปยังโฮสต์ และระบุ
งาน ./gradlew lockClocks
หากต้องการใช้ปลั๊กอิน ให้ใส่บรรทัดต่อไปนี้ในบล็อก `plugins` ในไฟล์ build.gradle
ระดับบนสุด
Groovy
plugins { id 'androidx.benchmark' version '1.3.4' apply false }
Kotlin
plugins { id("androidx.benchmark") version "1.3.4" apply false }
จากนั้นใช้ปลั๊กอินกับไฟล์ build.gradle
ของข้อบังคับ
Groovy
plugins { id 'androidx.benchmark' }
Kotlin
plugins { id("androidx.benchmark") }
ความคิดเห็น
ความคิดเห็นของคุณช่วยปรับปรุง Jetpack ได้ โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมีแนวคิดในการปรับปรุงคลังนี้ โปรดดูปัญหาที่มีอยู่ในคลังนี้ก่อนสร้างปัญหาใหม่ คุณสามารถเพิ่มการโหวตให้กับปัญหาที่มีอยู่ได้โดยคลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของเครื่องมือติดตามปัญหา
เวอร์ชัน 1.4
เวอร์ชัน 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
ให้ตรวจสอบผลลัพธ์ของคําสั่ง kill เพื่อป้องกันไม่ให้เกิดข้อผิดพลาดแบบเงียบๆ และข้อผิดพลาดเกี่ยวกับเวลาหมด (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 อย่างกำหนดค่าได้โดยใช้พารามิเตอร์ระยะหมดเวลาเดียว (Ifec87)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหา 2-3 ข้อที่อาจเกิดขึ้นเมื่อทำการเปรียบเทียบหรือบันทึกโปรไฟล์ของแอปโดยไม่มี
profileinstaller
และมีการรวมBroadcastReciever
การดำเนินการนี้จะส่งผลต่อการทำงานในอุปกรณ์ที่รูทเท่านั้น (Ied308)
เวอร์ชัน 1.4.0-alpha09
12 มีนาคม 2025
androidx.benchmark:benchmark-*:1.4.0-alpha09
ได้รับการปล่อยแล้ว เวอร์ชัน 1.4.0-alpha09 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
TraceProcessor
และ Session API ที่มีตัวแฮนเดิลที่ปิดได้ เพื่อให้ใช้งานกับวงจรที่กําหนดเองได้ง่ายขึ้น การดำเนินการนี้ยังเป็นก้าวสำคัญในการช่วยให้ Coroutine และ Java API ใช้งานได้ง่ายขึ้นด้วย ตอนนี้ฟังก์ชันส่วนขยายสำหรับTraceProcessor.runServer {}
มีการทำเครื่องหมายเป็นเวอร์ชันทดลองแล้ว เนื่องจากมีแนวโน้มที่จะย้ายและเปลี่ยนเป็นเวอร์ชันที่ไม่ใช่เวอร์ชันทดลองในอนาคต (I358b4)
การแก้ไขข้อบกพร่อง
- แก้ไขการจับภาพการเปรียบเทียบและโปรไฟล์พื้นฐานไม่ทํางานกับ API 36 เนื่องจากการเปลี่ยนแปลงใน
pgrep
toybox ซึ่งตอนนี้กำหนดให้-a
ต้องพิมพ์บรรทัดคำสั่งแบบเต็ม (Idc991) - กรองการกําหนดค่าการติดตามเริ่มต้นเพื่อลดความเสี่ยงที่ข้อมูลจะสูญหายในการติดตามในระดับ API ที่ใหม่กว่า (I54e8a)
- เพิ่มอาร์กิวเมนต์เครื่องมือวัด
androidx.benchmark.killExistingPerfettoRecordings
เวอร์ชันทดลอง ซึ่งสามารถตั้งค่าเป็นfalse
เพื่อให้การบันทึกร่องรอยของ Perfetto ที่มีอยู่เดิมทำงานต่อไปได้ โดยค่าเริ่มต้น ระบบจะหยุดการบันทึกร่องรอยของ Perfetto ที่มีอยู่เดิมในอุปกรณ์เพื่อป้องกันการรบกวน (I02a3c) - ตอนนี้ช่อง JSON
context.osCodenameAbbreviated
จะเปลี่ยนเป็นREL
สำหรับเวอร์ชันระบบปฏิบัติการที่เผยแพร่ตั้งแต่ API 35 ขึ้นไป เนื่องจากแพลตฟอร์มพื้นฐานไม่รองรับชื่อโค้ดที่ไม่ใช่ตัวเลขอีกต่อไป (Ib17fd) - แก้ไขข้อขัดข้องใน
FrameTimingMetric
เมื่อเกิดเฟรมที่ซิงค์ใหม่ (I7c6f4, b/394610806) - ไม่ถือว่า
Choreographer#doFrame
เป็นด้านบนของเฟรมสแต็กในเธรดหลักของFrameTimingQuery
อีกต่อไป (Iee0e0, b/340206285)
เวอร์ชัน 1.4.0-alpha08
12 กุมภาพันธ์ 2025
androidx.benchmark:benchmark-*:1.4.0-alpha08
ได้รับการปล่อยแล้ว เวอร์ชัน 1.4.0-alpha08 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ย้าย API ส่วนขยาย
TraceProcessor.runSession()
ไปอยู่ในสถานะทดลอง เนื่องจากมีแนวโน้มที่จะเปลี่ยนไปเป็นคอนสตรัคเตอร์ที่สมบูรณ์ใน Android (Ib0528, b/393640753) - การใช้งานข้อมูลเชิงลึกเกี่ยวกับธุรกิจเริ่มต้นส่วนใหญ่ตอนนี้เป็นแบบสาธารณะ/เวอร์ชันทดลอง และย้ายไปยัง
TraceProcessor
รายการต่างๆ ของStartupInsights
(I0aa00) - เลิกใช้งาน
BenchmarkRule.runWithTimingDisabled {}
และใช้BenchmarkRule.runWithMeasurementDisabled {}
แทน ซึ่งอธิบายลักษณะการทํางานได้ชัดเจนกว่า โดยเมตริกทั้งหมดจะหยุดชั่วคราว นอกจากนี้ ให้แสดงซุปเปอร์คลาสMicrobenchmarkScope
เนื่องจากคุณไม่สามารถประกาศฟังก์ชันrunWithMeasurementDisabled
อีกครั้งเพื่อเปิดการเข้าถึงได้ เนื่องจากฟังก์ชันดังกล่าวอยู่ภายในบรรทัด (I9e23b, b/389149423, b/149979716) - ไลบรารีการเปรียบเทียบประสิทธิภาพได้ย้ายไปใช้ Kotlin 2.0 แล้ว (I9d1e0)
- นําอาร์กิวเมนต์เครื่องมือวัด
androidx.benchmark.startupProfiles.enable
ออกแล้ว จึงไม่มีประโยชน์อีกต่อไป เนื่องจากสามารถควบคุมได้ด้วยincludeInStartupProfile
arg ในBaselineProfileRule.collect()
(I39eb4)
การแก้ไขข้อบกพร่อง
- ลดจำนวนฟังก์ชันภายในของ Microbenchmark ที่เรียกใช้ระหว่างการโปรไฟล์เพื่อให้การติดตามเมธอดชัดเจนขึ้น (Ifaed8)
- การแก้ไขแบบคาดเดาสำหรับการขัดข้อง: "หยุด [
ProcessPid(processName=perfetto, pid=...)
] ไม่ได้" ตอนนี้การเปรียบเทียบจะบันทึกข้อความแทนที่จะขัดข้องเมื่อหยุดกระบวนการ Perfetto ในเบื้องหลังไม่ได้ก่อนที่จะทำการเปรียบเทียบ (I37d3e, b/323601788) - แก้ไข
IllegalStateExceptions
ที่มีป้ายกำกับ "stdoutpm dump-profiles
ที่คาดไว้" ซึ่งเกิดจากการตรวจสอบรูปแบบเอาต์พุตที่เข้มงวดเกินไป (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
ซึ่งสามารถตั้งค่าเป็นเท็จเพื่อปิดใช้ลักษณะการทำงาน "throw on deadline" ของmeasureRepeatedOnMainThread
สำหรับการทดสอบในเครื่อง ไม่แนะนํา เนื่องจากจะเพิ่มโอกาสที่จะได้รับ ANR ระหว่างการทดสอบ (Idbeec, b/353226476)
การเปลี่ยนแปลง API
- เพิ่ม
@JvmOverloads
ไปยังตัวสร้างMicrobenchmarkConfig
(I13fd3) - ปรับโฉม
BenchmarkRule
ให้สร้างขึ้นจาก Coroutine และรองรับลักษณะการทำงานyield()
ได้ดียิ่งขึ้น การปรับปรุงนี้นําBenchmarkState
API เวอร์ชันทดลองหลายรายการออก แต่จะมีการแทนที่ตามต้องการ นอกจากนี้ เราได้เพิ่มrunWithMeasurementDisabled
เพื่อชี้แจงลักษณะการทํางาน (การวัดทั้งหมดหยุดชั่วคราว) เราจะเลิกใช้งานrunWithTimingDisabled
ในอนาคต (I19837, b/389149423, b/311242861) - ย้าย
PerfettoTraceProcessor
ไปยังTraceProcessor
ในอาร์ติแฟกต์androidx.benchmark:benchmark-traceprocessor
ใหม่ และทำให้ API ส่วนใหญ่ไม่ใช่เวอร์ชันทดลองTraceMetric
ที่กําหนดเองหรือข้อมูลใดก็ตามที่อ่านจากร่องรอยจะต้องอัปเดตเป็นการนําเข้าTraceProcessor
ใหม่TraceProcessor
API ใหม่ทํางานเหมือนกับ API เดิมทุกประการ แต่เป็นไลบรารีอินเทอร์เฟซแบบสแตนด์อโลน (คล้ายกับเลเยอร์androidx.sqlite
จาก Room) ที่มีการใช้งานเฉพาะ Android ซึ่งฝังอยู่ในการทดสอบแบบแมโคร คุณใช้อาร์ติแฟกต์ใหม่ใน 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)
การแก้ไขข้อบกพร่อง
- ตอนนี้ไลบรารีนี้ใช้แอตทริบิวต์ JSpecify nullness ซึ่งเป็นการใช้ประเภท นักพัฒนาซอฟต์แวร์ Kotlin ควรใช้อาร์กิวเมนต์คอมไพเลอร์ต่อไปนี้เพื่อบังคับใช้การใช้งานที่ถูกต้อง
-Xjspecify-annotations=strict
(นี่เป็นค่าเริ่มต้นที่เริ่มตั้งแต่คอมไพเลอร์ Kotlin เวอร์ชัน 2.1.0) (I46810, b/326456246) - แก้ไข
ArtMetric
เพื่อรายงานการโหลดคลาส (ไม่ใช่ init) และปรับปรุงเอกสารเพื่อชี้แจงลักษณะการทํางานรันไทม์ (I9915c) - ใน Android แบบผู้ใช้หลายคน ให้เรียกใช้คำสั่งในฐานะรูทในอุปกรณ์ที่รูทเท่านั้น (I88b44)
เวอร์ชัน 1.4.0-alpha05
13 พฤศจิกายน 2024
androidx.benchmark:benchmark-*:1.4.0-alpha05
ได้รับการปล่อยแล้ว เวอร์ชัน 1.4.0-alpha05 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาใน API 34 ขึ้นไปที่
CompilationMode.None()
จะมีประสิทธิภาพที่ไม่สอดคล้องกัน ซึ่งไม่ได้แสดงถึงประสิทธิภาพเริ่มต้นที่เลวร้ายที่สุด ซึ่งจะช่วยแก้ปัญหาการเปลี่ยนแปลงแพลตฟอร์มที่อนุญาตให้สถานะการคอมไพล์verify
ของ ART คอมไพล์แอปบางส่วน (ส่งผลต่อเฉพาะการโหลดคลาส) ไม่นานหลังจากเปิดใช้งานครั้งแรก (Ie48d0) - แก้ไขปัญหาที่ระบบอาจบันทึกการติดตาม (โดยเฉพาะการติดตามสั้นๆ) ที่จะไม่รายงานการวัดผลจากเมตริกการทดสอบประสิทธิภาพแบบรวมอยู่ในระบบ เนื่องจากชื่อกระบวนการถูกตัดภายในการติดตาม 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
- การทดสอบประสิทธิภาพแบบมาโคร: เพิ่ม
ArtMetric
ซึ่งสามารถใช้ตรวจสอบความครอบคลุมของโปรไฟล์หรือประสิทธิภาพทั่วไปของรันไทม์ Android บันทึกจำนวนและระยะเวลาทั้งหมดของ JIT, การสร้างชั้นเรียน (หากมี) และการตรวจสอบชั้นเรียน นอกจากนี้ การเปลี่ยนแปลงCaptureInfo
ให้มีเวอร์ชันหลักของ ART ซึ่งเป็นตัวเลือกพร้อมกับเวอร์ชันเริ่มต้น (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)
- ตอนนี้ไลบรารีนี้ใช้แอตทริบิวต์ JSpecify nullness ซึ่งเป็นการใช้ประเภท นักพัฒนาซอฟต์แวร์ Kotlin ควรใช้อาร์กิวเมนต์คอมไพเลอร์ต่อไปนี้เพื่อบังคับใช้การใช้งานที่ถูกต้อง
-Xjspecify-annotations=strict
(นี่เป็นค่าเริ่มต้นที่เริ่มตั้งแต่คอมไพเลอร์ Kotlin เวอร์ชัน 2.1.0) (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) - จากการเปรียบเทียบ
1.3.2
: แก้ไข Firebase Test Lab (FTL) ไม่สามารถดึงไฟล์ผลลัพธ์ของโปรไฟล์พื้นฐานหรือการเปรียบเทียบแบบแมโครจากปลั๊กอิน 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.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) - ตอนนี้เมตริกการทดสอบประสิทธิภาพแบบละเอียดจะแสดงในการติดตามของ Perfetto เป็นเคาน์เตอร์ (3214854)
- เพิ่มสคริปต์ทดลองสำหรับการปิดใช้ JIT (ต้องใช้สิทธิ์รูท / รีสตาร์ทรันไทม์) และรีเซ็ตสถานะประสิทธิภาพ/การทดสอบของอุปกรณ์ ขณะนี้ยังไม่มีการเผยแพร่เป็นงาน Gradle (7c3732b)
- เพิ่มอาร์กิวเมนต์การเปรียบเทียบเพื่อข้ามการทดสอบเมื่อทำงานบนโปรแกรมจำลอง เมื่อเปิดใช้รุ่น
automaticGenerationDuring
ไว้ ข้อมูลเปรียบเทียบจะทริกเกอร์การสร้างโปรไฟล์พื้นฐานด้วย การดำเนินการนี้จะดำเนินการไม่สำเร็จหากใช้โปรแกรมจำลอง เมื่อใช้อาร์กิวเมนต์ใหม่skipBenchmarksOnEmulator
เราจะข้ามการทดสอบได้ (0c2ddcd) - เปลี่ยนตรรกะการเปิดใช้เหตุการณ์ประสิทธิภาพให้ทํางานใน API 23 ขึ้นไป (2550048)
การเปลี่ยนแปลง API
- ย้ายอาร์กิวเมนต์
PerfettoConfig
ที่มีอยู่ซึ่งทดสอบกับMacrobenchmarkRule.measureRepeated()
ไปยังออบเจ็กต์ExperimentalConfig
ใหม่
การแก้ไขข้อบกพร่อง
- เพิ่มจำนวนการลองอีกครั้ง
lockClocks.sh
(99e9dac) - อย่าสร้าง
nonMinified
และประเภทบิลด์การเปรียบเทียบหากมีอยู่แล้ว เนื่องจากข้อบกพร่อง ระบบจะสร้างประเภทบิลด์nonMinified
และ Benchmark ขึ้นมาใหม่แม้ว่าจะมีอยู่แล้วก็ตาม (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) ดึงไฟล์ผลลัพธ์ของโปรไฟล์พื้นฐานหรือการทดสอบประสิทธิภาพแบบแมโครจากปลั๊กอิน 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 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลงการทดสอบประสิทธิภาพระดับไมโครตั้งแต่เวอร์ชัน 1.2.0
- การติดตามเมธอดจะเปิดอยู่โดยค่าเริ่มต้นในไมโครเบนช์มาร์กเมื่อทำงานในอุปกรณ์ส่วนใหญ่
- การติดตามเมธอดจะทํางานเป็นระยะที่แยกต่างหากหลังจากการวัด ซึ่งจะช่วยให้ทั้งการวัดผลและการติดตามเมธอดแสดงผลได้อย่างถูกต้องจากการเรียกใช้การทดสอบประสิทธิภาพครั้งเดียว
- การติดตามเมธอดในระบบปฏิบัติการ Android และ ART บางเวอร์ชันจะส่งผลต่อระยะการวัดผลในภายหลัง เวอร์ชันเหล่านี้จะปิดการติดตามเมธอดไว้โดยค่าเริ่มต้นและระบบจะพิมพ์คําเตือนไปยังเอาต์พุตของ Studio
- การเปรียบเทียบและเอนทิตีที่ทำให้เกิดข้อขัดข้องในเธรดหลัก
- เพิ่ม
measureRepeatedOnMainThread
สำหรับการทดสอบประสิทธิภาพของเธรด UI (เช่น การโต้ตอบกับ UI ของ Compose/View) เพื่อหลีกเลี่ยง ANR เมื่อทำงานเป็นเวลาหลายวินาที - ระบบจะข้ามการติดตามเมธอดหากคาดว่าจะเกินกำหนดเวลาในการหลีกเลี่ยง ANR ตั้งค่า
androidx.benchmark.profiling.skipWhenDurationRisksAnr
เป็นเท็จเพื่อปิดใช้ลักษณะการทำงานนี้ (ไม่แนะนําสําหรับการเรียกใช้ CI เนื่องจาก ANR อาจทําให้เกิดปัญหาในการเรียกใช้ CI เป็นเวลานาน)
- เพิ่ม
- การลดขนาด
- กฎ ProGuard ที่ฝังไว้เพื่อปรับปรุงการทดสอบประสิทธิภาพแบบไมโครเมื่อเปิดใช้การย่อขนาด
- การทำให้ไฟล์มีขนาดเล็ก/R8 ในโมดูลไลบรารีต้องใช้ AGP 8.3 และสามารถเปิดใช้ได้ผ่าน
android.buildTypes.release.androidTest.enableMinification
ในbuild.gradle
- เพิ่ม
BlackHole.consume()
API เวอร์ชันทดลองเพื่อป้องกันการกำจัดโค้ดที่ตายแล้ว (If6812, b/286091643)
- เมตริก
- ฟีเจอร์ตัวนับเหตุการณ์ CPU เวอร์ชันทดลอง (เมตริกจาก
perf_event_open
ซึ่งต้องใช้สิทธิ์รูทในแพลตฟอร์มเวอร์ชันส่วนใหญ่) เข้าถึงผ่านInstrumentationArgument
androidx.benchmark.cpuEventCounter.enable
(ตั้งค่าเป็นtrue
ได้) และตั้งค่าandroidx.benchmark.cpuEventCounter.events
เป็น (Instructions,CpuCycles
) ได้ โปรแกรมจำลอง userdebug บางรุ่นควรรองรับฟีเจอร์นี้ แต่ยังไม่มีการทดสอบการรองรับในโปรแกรมจำลองทั้งหมดที่มี
- ฟีเจอร์ตัวนับเหตุการณ์ CPU เวอร์ชันทดลอง (เมตริกจาก
การเปลี่ยนแปลง MACRObenchmark ตั้งแต่เวอร์ชัน 1.2.0
- ปรับปรุงการติดตามเมธอดสําหรับการทดสอบประสิทธิภาพแบบมาโคร
- ตอนนี้การติดตามเมธอดจะกําหนดขอบเขตตามระยะเวลาของ
measureBlock
และสามารถบันทึกเซสชันหลายรายการได้หากกระบวนการเริ่มต้นหลายครั้ง - ก่อนหน้านี้ การติดตามเมธอดจะทํางานกับ
StartupMode.COLD
เบนช์มาร์กเท่านั้น และจะไม่บันทึกข้อมูลสําหรับmeasureBlocks
ที่ไม่ได้เริ่มกระบวนการเป้าหมายอีกครั้ง - แก้ไขการล้างร่องรอยเมธอดในมาโครเบนช์มาร์กเพื่อให้ระบบบันทึกร่องรอยเมธอดได้อย่างสมบูรณ์และถูกต้อง แม้ในอุปกรณ์ที่ช้ากว่า (I6349a, b/329904950)
- ตอนนี้การติดตามเมธอดจะกําหนดขอบเขตตามระยะเวลาของ
- วางไฟล์โปรไฟล์ ART อย่างถูกต้องระหว่างการวนซ้ำ
warmUp
แต่ละครั้งเมื่อมีการหยุดกระบวนการเพื่อให้การวัดCompilationMode.Partial(warmup=N)
มีความแม่นยำมากขึ้น (I17923) - ข้อความแสดงข้อผิดพลาดในการออกอากาศ Shader
- เพิ่มคำแนะนำในการแก้ไขข้อบกพร่องเพื่อแสดงข้อความแจ้งว่าออกอากาศชิดเดอร์ไม่สำเร็จ
- เพิ่มอาร์กิวเมนต์เครื่องมือวัด 2 รายการสำหรับการลบล้างลักษณะการทิ้งเฉดสีเพื่อแก้ปัญหาข้อขัดข้องเมื่อทำการทดสอบประสิทธิภาพแอปโดยไม่มี
ProfileInstaller
1.3androidx.benchmark.dropShaders.enable=true/false
: ใช้เพื่อข้ามการลดระดับ shader ทั้งหมดได้ (รวมถึงการลดระดับที่ดำเนินการในการเปิดStartupMode.Cold
) โดยเฉพาะเมื่อทำการทดสอบประสิทธิภาพแอปที่ไม่ได้ใช้ ProfileInstaller 1.3androidx.benchmark.dropShaders.throwOnFailure=true/false
: ใช้เพื่อยอมรับความล้มเหลวเมื่อพยายามวางเฉดสี เช่น เมื่อทำการทดสอบประสิทธิภาพแอปโดยไม่มี ProfileInstaller 1.3 (I4f573)
- เพิ่มตัวแปร
MacrobenchmarkRule#measureRepeated
เวอร์ชันทดลองซึ่งใช้PerfettoConfig
ที่กําหนดเองสําหรับการบันทึกร่องรอย Perfetto ที่กําหนดเองได้อย่างเต็มที่ โปรดทราบว่าการกําหนดค่าที่ไม่ถูกต้องอาจทําให้คลาสเมตริกในตัวใช้งานไม่ได้ (Idfd3d, b/309841164, b/304038384) - ยกเลิกงาน dexopt เบื้องหลังก่อนเรียกใช้การทดสอบประสิทธิภาพแบบมาโครเพื่อลดการรบกวน (I989ed)
- ตอนนี้การทดสอบประสิทธิภาพแบบมาโครจะรอ 1 วินาทีเพื่อให้แอปพลิเคชันเป้าหมายล้างโปรไฟล์ ART (ก่อนหน้านี้รอ 500 มิลลิวินาที) (I85a50, b/316082056)
- การปรับโฉม TraceSectionMetric
- หมายเหตุ: การเปลี่ยนแปลง
TraceSectionMetric
ด้านล่างอาจส่งผลต่อเอาต์พุตในการใช้งาน CI และอาจทําให้เกิดความต่อเนื่องไม่สอดคล้องกันหรือทำให้การแยกวิเคราะห์หยุดชะงัก - ตอนนี้ผลรวมเป็นค่าเริ่มต้นแล้ว เนื่องจากการใช้งานส่วนใหญ่ของเมตริกนี้ใช้กับเหตุการณ์ที่ซ้ำกัน และค่าแรกจะทิ้งข้อมูลในกรณีเหล่านี้
- เปลี่ยนให้ปรับแต่งได้มากขึ้นและมีโหมดให้เลือกมากขึ้น
- ตอนนี้ชื่อโหมดจะฝังอยู่ในชื่อเอาต์พุตเมตริก (ใน Studio และ JSON)
- ตอนนี้รองรับข้อมูลพร็อพเพอร์ตี้ที่สร้างขึ้นโดยใช้
Trace.{begin|end}AsyncSection
แล้ว
- หมายเหตุ: การเปลี่ยนแปลง
- เมตริก
- เพิ่ม
PowerMetric.deviceSupportsHighPrecisionTracking
,PowerMetric.deviceBatteryHasMinimumCharge()
และPowerMetric.deviceSupportsPowerEnergy()
แล้ว - เปลี่ยนชื่อ
Metric.getResult
เป็นgetMeasurements
เพื่อให้ตรงกับประเภทผลลัพธ์ - เพิ่มป้ายกำกับ log.w / exception ลงในการตรวจหาที่เริ่มต้นไม่สำเร็จทั้งหมด การดำเนินการนี้จะไม่เปลี่ยนลักษณะการทำงานปัจจุบัน (จึงจะแสดงข้อผิดพลาดบางอย่างและอื่นๆ ไม่สามารถตรวจหาการเริ่มต้นระบบได้) เพียงแต่ทำให้เข้าใจได้ง่ายขึ้น โดยทั่วไปแล้ว เหตุการณ์ที่
Log.w()
และรายงานเมตริกการเริ่มต้นไม่สําเร็จคือเหตุการณ์ที่ไม่มีเฟรม ระบบจะแสดงข้อยกเว้นเมื่อตรวจพบการเริ่มต้น ยกเว้นข้อมูลเวลาเฟรม (จากส่วน UI/RT) (Id240f, b/329145809) - เพิ่มการวัด
frameCount
ลงในFrameTimingMetric
เพื่อช่วยในการค้นหาสถานการณ์ที่การวัดผลเปลี่ยนแปลงเนื่องจากจำนวนเฟรมที่ผลิตมีการเปลี่ยนแปลง (เพิ่มภาพเคลื่อนไหวใหม่ แก้ไขปัญหาการทำให้ข้อมูลไม่ถูกต้อง) (I1e5aa) - ชี้แจงว่า
frameOverrunMs
เป็นเมตริกที่แนะนำสำหรับการติดตามเมื่อพร้อมใช้งานในเอกสาร และเหตุผล (I18749, b/329478323) - แก้ไขปัญหาที่ระบบอาจจับคู่เฟรมที่ยังไม่สิ้นสุดที่จุดเริ่มต้นและจุดสิ้นสุดของการติดตามเข้าด้วยกัน ซึ่งจะรายงานอย่างไม่ถูกต้องว่าเป็นเฟรมเดียวที่ยาวมาก (I39353, b/322232828)
- ปรับปรุงข้อผิดพลาด
FrameTimingMetric
เมื่อระบบไม่สร้างเฟรม และแสดงลิงก์เพื่อติดตามเสมอเมื่อแยกวิเคราะห์เมตริกไม่สําเร็จเพื่อช่วยในการวินิจฉัยปัญหา (I956b9) - แก้ไขข้อขัดข้องใน
FrameTimingMetric
ที่ไม่สามารถแยกวิเคราะห์รหัสเฟรม โดยเฉพาะในอุปกรณ์ OEM บางรุ่น (Ia24bc, b/303823815, b/306235276) - ลดความเข้มงวดในการตรวจสอบใน
FrameMetrics
และเพิ่มรายละเอียดในข้อความแสดงข้อผิดพลาด (Iadede)
- เพิ่ม
การเปลี่ยนแปลงการบันทึกโปรไฟล์พื้นฐาน / ปลั๊กอิน Gradle ตั้งแต่เวอร์ชัน 1.2.0
- เพิ่มเวอร์ชัน AGP สูงสุดที่แนะนำเป็น 9.0.0-alpha01
- ตรวจสอบว่างาน
mergeArtProfile
และmergeStartupProfile
รอการสร้างโปรไฟล์พื้นฐานเสมอ (I623d6, b/343086054) - การสร้างโปรไฟล์พื้นฐานสําเร็จจะแสดงข้อมูลสรุปของสิ่งที่เปลี่ยนแปลง (I824c8, b/269484510)
- เพิ่ม DSL เพื่อปิดใช้คำเตือน (Ic4deb, b/331237001)
- แก้ไขเพื่อให้การเปรียบเทียบใช้โปรไฟล์พื้นฐานที่สร้างขึ้นเมื่อ
automaticGenerationDuringBuild
ปิดอยู่ (Ic144f, b/333024280) - แก้ไขการลบล้างพร็อพเพอร์ตี้ของปลั๊กอิน
BaselineProfile
gradle เพื่อเปิดใช้การสร้างโปรไฟล์พื้นฐานและการเปรียบเทียบประสิทธิภาพเมื่อปรับแต่งnonMinified
หรือประเภทบิลด์การเปรียบเทียบประสิทธิภาพ (Ib8f05, b/324837887) - แก้ไขการรวมโปรไฟล์พื้นฐานของไลบรารีใน AAR ก่อน AGP 8.3.0-alpha15 (I1d2af, b/313992099)
- แก้ไข URL เอาต์พุตของโปรไฟล์พื้นฐานและโปรไฟล์เริ่มต้นเมื่อสิ้นสุดงานการสร้าง (I802e5, b/313976958)
การเปลี่ยนแปลงที่สำคัญอื่นๆ ตั้งแต่เวอร์ชัน 1.2.0
- การบันทึกการติดตาม
- ลดข้อผิดพลาด EXITCODE 2 เมื่อเริ่ม Perfetto จากข้อผิดพลาดเป็นคําเตือนที่บันทึกไว้
- เปิดใช้การติดตาม AIDL โดยค่าเริ่มต้นในการเปรียบเทียบประสิทธิภาพ(ต้องใช้ API 28) (Ia0af2, b/341852305)
- เปิดใช้การติดตามแท็ก Porter โดยค่าเริ่มต้นในการเปรียบเทียบ ซึ่งจะบันทึกข้อมูล เช่น จุดติดตาม Wakelock (Icfe44, b/286551983)
- เพิ่มระยะหมดเวลาของจุดเริ่มต้นการบันทึกการติดตามเพื่อหลีกเลี่ยงข้อขัดข้องเมื่อเริ่มการติดตามในอุปกรณ์ที่ช้ากว่า (I98841, b/329145808)
- เพิ่ม API
PerfettoTraceProcessor.Session.queryMetrics
สาธารณะที่มีรูปแบบ 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 เพื่อส่งชื่อแพ็กเกจเป็นอาร์กิวเมนต์ instr เวอร์ชันก่อนหน้า 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) - เพิ่ม
BlackHole.consume()
api เวอร์ชันทดลองเพื่อป้องกันการกำจัดโค้ดที่ตายแล้วในไมโครเบนช์มาร์ก (If6812, b/286091643) - ตอนนี้การทดสอบประสิทธิภาพแบบละเอียดจะแสดงข้อผิดพลาดอย่างถูกต้องเพื่อป้องกันไม่ให้การติดตามเมธอดรบกวนการวัดผล ปัญหานี้เกิดขึ้นในอุปกรณ์บางเครื่องเมื่อมีการบังคับใช้การติดตามเมธอด (ผ่านอาร์กิวเมนต์เครื่องมือวัดหรือ
MicrobenchmarkConfig
) และหากมีการพยายามวัดผลหลังจากการติดตามเมธอด อุปกรณ์ที่ได้รับผลกระทบจะใช้งาน API 26-30 หรือโมดูลหลักของ ART บางเวอร์ชันที่ได้รับผลกระทบจากการรบกวนนี้ และสามารถตรวจพบได้เมื่อรันไทม์ผ่านProfilerConfig.MethodTracing.affectsMeasurementOnThisDevice
(Iafb92, b/303660864)
การแก้ไขข้อบกพร่อง
- เพิ่มเวอร์ชัน agp สูงสุดที่แนะนำเป็น 9.0.0-alpha01 (I5bbb0)
- เพิ่มโหมดการคอมไพล์ลงในบริบทการเปรียบเทียบ (If5612, b/325512900)
- เปิดใช้การติดตาม AIDL โดยค่าเริ่มต้น (ต้องใช้ API 28) (Ia0af2, b/341852305)
- เพิ่มข้อมูลเพิ่มเติมในบริบทการเปรียบเทียบในเอาต์พุต JSON ดังนี้
context.artMainlineVersion
- เวอร์ชันจำนวนเต็มของโมดูลเมนไลน์ Art (หากมีในอุปกรณ์ หากไม่มีจะเป็น -1)context.build.id
- เท่ากับandroid.os.Build.ID
context.build.version.codename
- เท่ากับandroid.os.Build.VERSION.CODENAME
context.build.version.abbreviatedCodename
- สอดคล้องกับตัวอักษรแรกของชื่อรหัสรุ่นก่อนเปิดตัว (แม้ในรุ่นที่เผยแพร่แล้ว) (Ie5020)
- แก้ไข
StackSampling
ให้เป็นไปตามandroidx.benchmark.profiling.sampleDurationSeconds
(Ib1d53) - เปลี่ยน macro->common 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)
- การติดตามเมธอดจะทํางานเป็นระยะที่แยกต่างหากระหว่างการทดสอบประสิทธิภาพแบบมาโคร และจะไม่ส่งผลต่อการวัดอีกต่อไป (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)
- ลดความซับซ้อนในการบันทึกการติดตามเมธอดสําหรับการทดสอบประสิทธิภาพแบบมาโครโดยกําหนดขอบเขตให้อยู่ในช่วงของ
measureBlock()
จริง ก่อนหน้านี้ เครื่องมือจะเริ่มต้นเมื่อเปิดกระบวนการเป้าหมายและรองรับเฉพาะการเริ่มระบบแบบ Cold Start (Iee85a, b/300651094) - หลีกเลี่ยงข้อขัดข้องเมื่อตัวประมวลผลการติดตามของ Perfetto เริ่มทำงานช้า (I98841, b/329145808)
เวอร์ชัน 1.3.0-alpha03
17 เมษายน 2024
androidx.benchmark:benchmark-*:1.3.0-alpha03
ได้รับการปล่อยแล้ว เวอร์ชัน 1.3.0-alpha03 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่ม API
PerfettoTraceProcessor.Session.queryMetrics
สาธารณะที่มีรูปแบบ JSON, textproto และ proto แบบไบนารี (ไม่ได้ถอดรหัส) ซึ่งช่วยให้คุณค้นหาเมตริกที่สร้างไว้ใน 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
เป็นคลาสที่ปิดเพื่อให้ขยายได้ในอนาคตโดยไม่ทำให้คำสั่ง when ทำงานไม่ถูกต้อง (I71f7b) - เพิ่ม
TraceSectionMetric.Mode.Average
และ.Count
รวมถึงจัดเรียงอาร์กิวเมนต์ใหม่เพื่อให้อาร์กิวเมนต์ (โหมด) ที่พบบ่อยขึ้นอยู่ในช่วงต้นของรายการอาร์กิวเมนต์ ซึ่งช่วยลดความจำเป็นในการระบุชื่อพารามิเตอร์ (Ibf0b0, b/315830077, b/322167531) - เปลี่ยนชื่อ
Metric.getResult
เป็นgetMeasurements
เพื่อให้ตรงกับประเภทผลลัพธ์ (I42595)
การแก้ไขข้อบกพร่อง
- แก้ไขเพื่อให้การเปรียบเทียบใช้โปรไฟล์พื้นฐานที่สร้างขึ้นเมื่อ
automaticGenerationDuringBuild
ปิดอยู่ (Ic144f, b/333024280) - แก้ไขการลบล้างพร็อพเพอร์ตี้ของปลั๊กอิน
BaselineProfile
gradle เพื่อเปิดใช้การสร้างโปรไฟล์พื้นฐานและการเปรียบเทียบประสิทธิภาพเมื่อปรับแต่งnonMinified
หรือประเภทบิลด์การเปรียบเทียบประสิทธิภาพ (Ib8f05, b/324837887) - แก้ไขการล้างร่องรอยเมธอดในมาโครเบนช์มาร์กเพื่อให้ระบบบันทึกร่องรอยเมธอดได้อย่างสมบูรณ์และถูกต้อง แม้ในอุปกรณ์ที่ช้ากว่า (I6349a, b/329904950)
- เปิดใช้การบล็อกการเริ่มต้นในบันทึกการติดตาม Perfetto เพื่อลดความเสี่ยงที่ข้อมูลจะหายไปในช่วงเริ่มต้นการติดตาม รองรับใน API ระดับ 33 ขึ้นไปเท่านั้น (Ie6e41, b/310760059)
- เพิ่มคำเตือนเมื่อใช้ Android Test Orchestrator ในโมดูลการเปรียบเทียบ เนื่องจากจะทำให้ระบบเขียนทับไฟล์ JSON เอาต์พุตต่อโมดูลซ้ำๆ (Ia1af6, b/286899049)
- ใช้ "," (คอมมา) เป็นตัวคั่นพันเพื่อให้เอาต์พุตของ Studio สอดคล้องกันโดยไม่คำนึงถึงภาษาของอุปกรณ์ (I3e921, b/313496656)
- ขณะนี้
TraceSectionMetric
รองรับข้อมูลพร็อพเพอร์ตี้ที่สร้างขึ้นโดยใช้Trace.{begin|end}AsyncSection
(I91b32, b/300434906) - เพิ่มป้ายกำกับ log.w / exception ลงในการตรวจหาที่เริ่มต้นไม่สำเร็จทั้งหมด การดำเนินการนี้จะไม่เปลี่ยนลักษณะการทำงานปัจจุบัน (จึงจะแสดงข้อผิดพลาดบางอย่างและอื่นๆ ไม่สามารถตรวจหาการเริ่มต้นระบบได้) เพียงแต่ทำให้เข้าใจได้ง่ายขึ้น โดยทั่วไปแล้ว เหตุการณ์ที่
Log.w()
และรายงานเมตริกการเริ่มต้นไม่สําเร็จคือเหตุการณ์ที่ไม่มีเฟรม ระบบจะแสดงข้อยกเว้นเมื่อตรวจพบการเริ่มต้น ยกเว้นข้อมูลเวลาเฟรม (จากส่วน UI/RT) (Id240f, b/329145809) - ยกเลิกงาน dexopt เบื้องหลังก่อนเรียกใช้การทดสอบประสิทธิภาพแบบมาโครเพื่อลดการรบกวน (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 แบบทดลองในไมโครเบนช์ผ่านกฎ Proguard ที่ฝังอยู่ โปรดทราบว่าการรองรับนี้ยังอยู่ในขั้นทดลอง และต้องใช้ AGP 8.3 สำหรับการลดขนาดการทดสอบโมดูลไลบรารี ใช้คำสั่งต่อไปนี้เพื่อเปิดใช้การย่อขนาด/การเพิ่มประสิทธิภาพ R8 ใน
build.gradle
ของโมดูลการเปรียบเทียบ ซึ่งควรทำให้ประสิทธิภาพเพิ่มขึ้นอย่างมาก ทั้งนี้ขึ้นอยู่กับปริมาณงาน (I738a3, b/184378053)android { buildTypes.release.androidTest.enableMinification = true }
การแก้ไขข้อบกพร่อง
- แก้ไขคำเตือนการติดตามเมธอดให้อยู่คนละบรรทัดกับเอาต์พุตการทดสอบประสิทธิภาพระดับไมโคร (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
เพื่อให้การเปรียบเทียบประสิทธิภาพของเธรดหลัก (เช่น การเปรียบเทียบที่ทำงานกับ Views หรือ UI ของ Compose) หลีกเลี่ยงการทริกเกอร์ ANR ได้ โดยเฉพาะในระหว่างการทดสอบชุดโปรแกรมขนาดใหญ่ใน CI (I5c86d) - เพิ่ม
FrameTimingGfxInfoMetric
ซึ่งเป็นการใช้งานFrameTimingMetric
ทางเลือกเวอร์ชันทดลองที่มีการวัดผลมาจากแพลตฟอร์มโดยตรง ไม่ใช่ดึงมาจากการติดตามของ Perfetto (I457cb, b/322232828) - เพิ่มความสามารถในการถ่ายโอนโปรไฟล์ ART ในระหว่างการวนซ้ำ
warmUp
แต่ละครั้ง (I17923) - การเปลี่ยนแปลงหลายอย่างใน
TraceSectionMetric
API- เพิ่ม
Mode.Min
,Mode.Max
- เพิ่มอาร์กิวเมนต์ป้ายกํากับเพื่อลบล้างชื่อส่วนเป็นป้ายกํากับเมตริก
- เพิ่มชื่อโหมดลงในเอาต์พุตเพื่อชี้แจงความหมายของเมตริก
- เปลี่ยนค่าเริ่มต้นเป็นผลรวม เนื่องจากการใช้งานส่วนใหญ่ของเมตริกนี้ใช้กับเหตุการณ์ที่ซ้ำกัน โปรดทราบว่าการเปลี่ยนแปลงนี้ในการใช้งาน CI อาจทําให้เกิดความต่อเนื่องหรือหยุดการแยกวิเคราะห์ (Ic1e82, b/301892382, b/301955938)
- เพิ่ม
การแก้ไขข้อบกพร่อง
- ปรับปรุงข้อความแสดงข้อผิดพลาดในปลั๊กอิน Gradle ของโปรไฟล์พื้นฐานเมื่อไม่มีอุปกรณ์ที่มีการจัดการที่ระบุ (Idea2b, b/313803289)
- แก้ไขการรวมโปรไฟล์พื้นฐานของไลบรารีใน AAR ก่อน AGP 8.3.0-alpha15 (I1d2af, b/313992099)
- แก้ไข URL เอาต์พุตของโปรไฟล์พื้นฐานและโปรไฟล์เริ่มต้นเมื่อสิ้นสุดงานการสร้าง (I802e5, b/313976958)
- ปรับการหมดเวลาของแหล่งข้อมูลเพื่อพยายามแก้ไข
java.lang.IllegalStateException: Failed to stop [ProcessPid(processName=perfetto, pid=...)]
(I8dc7d, b/323601788) - เพิ่มอาร์กิวเมนต์เครื่องมือวัด 2 รายการสำหรับการลบล้างลักษณะการทิ้งเฉดสีเพื่อแก้ปัญหาข้อขัดข้องเมื่อทำการทดสอบประสิทธิภาพแอปโดยไม่มี
ProfileInstaller
1.3androidx.benchmark.dropShaders.enable=true/false
: ใช้เพื่อข้ามการลดระดับ shader ทั้งหมดได้ (รวมถึงการลดระดับที่ดำเนินการในการเปิด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
เพื่อปิดแอปที่ไม่ใช่แอประบบ เช่น System UI หรือ Launcher (I5e028) - ตอนนี้การทดสอบประสิทธิภาพแบบมาโครจะรอ
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
เพื่อปิดแอปที่ไม่ใช่แอประบบ เช่น System 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
เวอร์ชันนี้เสถียรแล้ว ซึ่งเป็นเวอร์ชันที่ปรับปรุงและเรียบง่ายกว่าBaselineProfileRule.collectBaselineProfile
API เวอร์ชันทดลองก่อนหน้านี้- เพียงระบุ
packageName
แล้วเพิ่มประสิทธิภาพแอป
- เพียงระบุ
- สำหรับไลบรารีที่สร้างโปรไฟล์พื้นฐาน ตอนนี้คุณสามารถกรองกฎที่สร้างขึ้นได้ในโค้ด (อาร์กิวเมนต์
BaselineProfileRule.collect
) หรือจะกรองในปลั๊กอิน Gradle ที่ง่ายกว่านั้นก็ได้ - การแก้ไข
- แก้ไขการเก็บรวบรวมโปรไฟล์พื้นฐานใน Android U+ (Id1392, b/277645214)
Macrobenchmark
- คอมไพล์
- ตอนนี้การทดสอบประสิทธิภาพแบบมาโครจะรีเซ็ตสถานะการคอมไพล์อย่างถูกต้องทั้งหมดสําหรับการคอมไพล์แต่ละครั้ง ซึ่งจําเป็นต้องติดตั้ง APK อีกครั้งก่อน Android 14 เราจึงขอแนะนําอย่างยิ่งให้ทำการทดสอบประสิทธิภาพใน Android 14 ขึ้นไปหากต้องการเก็บสถานะ (เช่น การเข้าสู่ระบบของผู้ใช้) ไว้ในสิ่งที่จะวัด
- นอกจากนี้ คุณยังแก้ปัญหานี้ได้โดยการควบคุมการคอมไพล์แอปแยกต่างหาก และข้ามการคอมไพล์ด้วย
CompilationMode.Ignore()
หรืออาร์กิวเมนต์การทดสอบ
อาร์กิวเมนต์การวัดคุม
- รองรับอาร์กิวเมนต์เครื่องมือวัดประสิทธิภาพ
androidx.benchmark.dryRunMode.enable
(มีอยู่แล้วใน Microbenchmark) เพื่อให้การเรียกใช้การตรวจสอบเร็วขึ้น (เช่น เมื่อสร้างการเปรียบเทียบประสิทธิภาพหรือในขั้นตอนการส่งก่อน) - รองรับ
androidx.benchmark.profiling.mode=StackSampling
และMethodTracing
- เพิ่ม
androidx.benchmark.enabledRules
เพื่ออนุญาตให้การกรองรันไทม์ใช้โปรไฟล์พื้นฐานเทียบกับการทดสอบกฎการทดสอบประสิทธิภาพแบบแมโคร - เพิ่มอาร์กิวเมนต์
androidx.benchmark.perfettoSdkTracing.enable
เพื่อเปิดใช้การติดตามด้วย tracing-perfetto เช่น การติดตามการคอมโพสิชันใหม่ โปรดทราบว่าเมื่อใช้กับStartupMode.COLD
ระบบจะใช้เวลาในการโหลดและเปิดใช้ไลบรารีการติดตามอย่างมีนัยสําคัญในระหว่างการเริ่มต้นแอป
- รองรับอาร์กิวเมนต์เครื่องมือวัดประสิทธิภาพ
ข้อกำหนด
- ตอนนี้ Macrobenchmark ต้องใช้
ProfileInstaller
1.3.0 ขึ้นไปในแอปเป้าหมายเพื่อเปิดใช้การจับภาพ / รีเซ็ตโปรไฟล์ และการล้างแคชชิดเดอร์
- ตอนนี้ Macrobenchmark ต้องใช้
Metric API เวอร์ชันทดลองใหม่
- เพิ่ม
TraceSectionMetric
เวอร์ชันทดลอง ซึ่งช่วยให้ดึงข้อมูลการจับเวลาแบบง่ายจากบล็อกtrace("") {}
ในแอป หรือ TraceMetric เพื่อใช้ประโยชน์จากความสามารถในการค้นหาทั้งหมดของ PerfettoTraceProcessor
- เพิ่ม
PowerMetric
เวอร์ชันทดลองเพื่อบันทึกข้อมูลการใช้พลังงาน - เพิ่ม
MemoryCountersMetric
เวอร์ชันทดลองเพื่อนับข้อผิดพลาดของหน้า - เพิ่ม
PerfettoTraceProcessor
API เวอร์ชันทดลอง ซึ่งใช้ภายในเพื่อดึงข้อมูลเมตริกจากร่องรอยของระบบ (หรือที่เรียกว่าร่องรอย Perfetto)
- เพิ่ม
การแก้ไข
- แก้ไขข้อขัดข้องเมื่อติดตั้งหรือดึงข้อมูลโปรไฟล์จากแอปที่ติดตั้งจาก APK หลายรายการ (เช่น จาก App Bundle)
- แก้ไข
FrameTimingMetric
การละเว้นเฟรมที่มีรหัสเฟรมไม่สอดคล้องกัน (โดยทั่วไปคือเฟรมระหว่างช่วงการกระเพื่อมของ API 31 ขึ้นไป) (I747d2, b/279088460) - แก้ไขข้อผิดพลาดในการแยกวิเคราะห์ร่องรอยที่มีขนาดใหญ่กว่า 64 MB (Ief831, b/269949822)
- ชี้แจงข้อผิดพลาดเมื่อภาพระบบปฏิบัติการของอุปกรณ์ (โดยเฉพาะโปรแกรมจำลอง) ไม่ได้กําหนดค่าการติดตามหรือการคอมไพล์อย่างไม่ถูกต้อง
- ข้ามการตรวจสอบระดับแบตเตอรี่สำหรับอุปกรณ์ที่ไม่มีแบตเตอรี่ (ไมโครและมาโคร)
- ปรับปรุงเอาต์พุตไฟล์ให้แสดงข้อผิดพลาดที่ชัดเจนยิ่งขึ้นสำหรับไดเรกทอรีเอาต์พุตที่ไม่ถูกต้อง รวมถึงค่าเริ่มต้นที่ปลอดภัยยิ่งขึ้น
- ปรับปรุงความเสถียรของ
StartupMode.COLD
ด้วยการทิ้งแคชโปรแกรมวาดภาพอย่างต่อเนื่อง (แสดงผ่านMacrobenchmarkScope.dropShaderCache
ด้วย) - แก้ไขการแสดงผลสำรองแบบ Leanback สำหรับ
startActivityAndWait
แล้ว
การทดสอบประสิทธิภาพระดับไมโคร
- ฟีเจอร์
- เราได้ย้ายการโปรไฟล์ไปยังระยะที่แยกต่างหากหลังเมตริกอื่นๆ เพื่อให้การทดสอบ 1 ครั้งแสดงทั้งเวลาและผลการโปรไฟล์ที่แม่นยำ
- API การทดสอบ
- เพิ่ม
MicrobenchmarkConfig
API เวอร์ชันทดลองสําหรับการกําหนดเมตริกที่กําหนดเอง รวมถึงการกําหนดค่าการติดตามและการสร้างโปรไฟล์ ใช้เพื่อบันทึกการติดตามเมธอดหรือบันทึกจุดติดตาม (แต่ระวังค่าใช้จ่ายในการติดตาม) - เพิ่ม API เวอร์ชันทดลองสำหรับการควบคุม
BenchmarkState
แยกจากBenchmarkRule
โดยไม่ใช้ JUnit - เพิ่มระเบียน
PerfettoTrace
เวอร์ชันทดลองเพื่อบันทึกร่องรอย Perfetto ด้วยการกําหนดค่าที่กําหนดเองแยกจาก API การเปรียบเทียบ
- เพิ่ม
- การแก้ไข
- วิธีแก้ปัญหาช่องว่างนำหน้าขาดหายไปในเอาต์พุตการทดสอบประสิทธิภาพของ Android Studio
- แก้ปัญหาที่การพิมพ์คำเตือนในเอาต์พุตการเปรียบเทียบประสิทธิภาพของ Android Studio ไม่สำเร็จ
- แก้ไขข้อขัดข้องของ
SampledProfiling
ใน Android 13 (API 33) ขึ้นไป - ปรับปรุงประสิทธิภาพของ
dryRunMode
อย่างมากด้วยการข้ามIsolationActivity
และการติดตาม Perfetto (โหมดการทําเสมือนจริงเร็วขึ้นสูงสุด 10 เท่าในระบบปฏิบัติการเวอร์ชันเก่า)
เวอร์ชัน 1.2.0-rc02
6 ตุลาคม 2023
androidx.benchmark:benchmark-*:1.2.0-rc02
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-rc02 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไขเอาต์พุตไฟล์การเปรียบเทียบเพื่อให้การคัดลอกไฟล์ปลั๊กอิน
BaselineProfile
ทำงานได้อีกครั้ง ระบบสร้างและคัดลอกไฟล์ออกจากอุปกรณ์แล้ว แต่ได้เปลี่ยนชื่อไฟล์ดังกล่าวเพื่อไม่ให้ปลั๊กอิน Gradle เห็น (I8dbcc, b/303034735, b/296453339) - ชี้แจงข้อความแสดงข้อผิดพลาดในการโหลด
tracing-perfetto
เมื่อแทรกจากโมดูลการทดสอบประสิทธิภาพแบบมาโครลงในแอปพลิเคชันเป้าหมาย
เวอร์ชัน 1.2.0-rc01
20 กันยายน 2023
androidx.benchmark:benchmark-*:1.2.0-rc01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-rc01 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- ตอนนี้ระบบจะแสดงข้อยกเว้น (พร้อมวิธีการแก้ไข) เมื่อการติดตาม Perfetto SDK เริ่มต้นไม่สําเร็จในข้อมูลการเปรียบเทียบ (I6c878, b/286228781)
- แก้ไขข้อขัดข้อง OOM เมื่อแปลงการติดตามเมธอด ART -> รูปแบบ Perfetto (I106bd, b/296905344)
- (การทดสอบประสิทธิภาพแบบมาโคร) ชี้แจงป้ายกำกับการติดตามเมธอดเมื่อลิงก์ในเอาต์พุตการทดสอบของ Studio และแก้ไขชื่อไฟล์การติดตามเมธอดให้ไม่ซ้ำกันในอุปกรณ์/โฮสต์ เพื่อไม่ให้มีการเขียนทับเมื่อมีการเรียกใช้การทดสอบประสิทธิภาพมากกว่า 1 รายการ (I08e65, b/285912360)
- ตรวจสอบว่าอุปกรณ์ทำงานอยู่เมื่อจับภาพโปรไฟล์พื้นฐาน (I503fc)
เวอร์ชัน 1.2.0-beta05
30 สิงหาคม 2023
androidx.benchmark:benchmark-*:1.2.0-beta05
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-beta05 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ตอนนี้ปลั๊กอิน Gradle ของโปรไฟล์พื้นฐานรองรับปลั๊กอิน Android Gradle เวอร์ชัน 8.3 แล้ว (aosp/2715214)
เวอร์ชัน 1.2.0-beta04
23 สิงหาคม 2023
androidx.benchmark:benchmark-*:1.2.0-beta04
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-beta04 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ตอนนี้ปลั๊กอิน 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) - ตอนนี้จุดติดตามภายในของไลบรารีการเปรียบเทียบประสิทธิภาพ (รวมถึงการติดตามรอบ/ระยะของไมโครการเปรียบเทียบประสิทธิภาพ) จะปรากฏในเครื่องมือดูการติดตามระบบของ Studio และซ้อนอยู่ภายใต้กระบวนการที่ถูกต้องใน Perfetto (I6b2e7, b/293510459)
- นำข้อผิดพลาด "ไม่สามารถทำโปรไฟล์ได้" ของ 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 เมื่อระบบปฏิบัติการได้รับการกําหนดค่าการติดตามไม่ถูกต้อง ตามที่เพิ่งได้รับการแก้ไขในโปรแกรมจําลอง ARM64 ของ API 26/28 (I0a328, b/282191686)
- เพิ่มรายละเอียดเกี่ยวกับการรีเซ็ตการคอมไพล์ไม่สำเร็จเพื่อแนะนำให้อัปเดตโปรแกรมจำลอง เนื่องจากโปรแกรมจำลองบางตัวแก้ไขปัญหานี้ไปเมื่อเร็วๆ นี้ (I8c815, b/282191686)
- เปลี่ยน
androidx.test.uiautomator:uiautomator:2.2.0
เป็นapi
แทนการอ้างอิง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)
การแก้ไขข้อบกพร่อง
- การรองรับการเปรียบเทียบประสิทธิภาพแบบมาโครสำหรับ
androidx.benchmark.profiling.mode = MethodTracing
(I7ad37, b/285912360) - โปรไฟล์การทดสอบประสิทธิภาพแบบไมโครเบนช์มาร์กย้ายไปอยู่ในระยะที่แยกต่างหาก จึงเกิดขึ้นตามลำดับหลังการวัดผลแทนที่จะมาแทนที่การวัดผล ตอนนี้ส่วนการติดตาม
MethodTracing
จะรวมอยู่ในการติดตาม Perfetto ที่บันทึกไว้ด้วย หากมี (I9f657, b/285014599) - เพิ่มการวัดจํานวนไปยัง
TraceSectionMetric
ด้วยMode.Sum
(Ic121a, b/264398606)
เวอร์ชัน 1.2.0-alpha15
7 มิถุนายน 2023
androidx.benchmark:benchmark-*:1.2.0-alpha15
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha15 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่ม
MemoryUsageMetric
เวอร์ชันทดลองสําหรับการติดตามการใช้งานหน่วยความจําของแอปพลิเคชันเป้าหมาย (I56453, b/133147125, b/281749311) - เพิ่มการรองรับการกําหนดค่า Perfetto ที่กําหนดเองทั้งหมดด้วย
PerfettoTrace.record
(If9d75, b/280460183) - เพิ่มพร็อพเพอร์ตี้เพื่อข้ามการสร้างโปรไฟล์พื้นฐาน การใช้งาน:
./gradlew assemble -Pandroidx.baselineprofile.skipgeneration
(I37fda, b/283447020)
การเปลี่ยนแปลง API
collectBaselineProfile
API จะสร้างโปรไฟล์พื้นฐานที่เสถียรเสมอ ระบบได้นำcollectStableBaselineProfile
API ออกแล้วและควรใช้collectBaselineProfile
แทน (I17262, b/281078707)- เปลี่ยนอาร์กิวเมนต์
filterPredicate
ของBaselineProfileRule
เป็นค่าที่ไม่ใช่ Null โดยมีค่าเริ่มต้นที่เทียบเท่าเพื่อให้ลักษณะการทํางานของตัวกรองเริ่มต้นชัดเจนขึ้นในเอกสาร (I3816e)
การแก้ไขข้อบกพร่อง
- ปิดใช้การติดตาม
IsolationActivity
และ Perfetto ในdryRunMode
เพื่อปรับปรุงประสิทธิภาพให้ดียิ่งขึ้น เนื่องจากเป็นรันไทม์ส่วนใหญ่ (Ie4f7d) - รองรับการสุ่มตัวอย่างสแต็กการเรียกใช้ในมาโครการทดสอบโดยใช้อาร์กิวเมนต์การทดสอบเครื่องมือวัด
androidx.benchmark.profiling.mode=StackSampling
และandroidx.benchmark.profiling.sampleFrequency
(I1d13b, b/282188489) - แก้ไขข้อขัดข้องเมื่อวางชิเดอร์ใน Android U (API 34) รวมถึงในโปรแกรมจำลอง (I031ca, b/274314544)
เวอร์ชัน 1.2.0-alpha14
3 พฤษภาคม 2023
androidx.benchmark:benchmark-*:1.2.0-alpha14
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha14 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- แก้ไข
FrameTimingMetric
การละเว้นเฟรมที่มีรหัสเฟรมไม่สอดคล้อง ซึ่งจะทำให้ภาพเคลื่อนไหวบางอย่างในแพลตฟอร์มเวอร์ชันล่าสุด (API 31 ขึ้นไป) ละเว้นเฟรมจำนวนมากขณะที่RenderThread
แสดงภาพเคลื่อนไหว (เช่น ระหว่างที่มีภาพเคลื่อนไหว) (I747d2, b/279088460) - แก้ไขการแยกวิเคราะห์ตัวประมวลผลการติดตามสําหรับการติดตามที่มีขนาดใหญ่กว่า 64 MB (Ief831, b/269949822)
- แก้ไขการสร้างโปรไฟล์พื้นฐานใน Android U ไม่สำเร็จเนื่องจากเอาต์พุตของคำสั่ง
pm dump-profiles
แตกต่างกัน (Id1392, b/277645214) - แก้ไขสคริปต์การล็อกนาฬิกา GPU เพื่อเปรียบเทียบสตริงอย่างถูกต้อง (I53e54, b/213935715)
เวอร์ชัน 1.2.0-alpha13
5 เมษายน 2023
androidx.benchmark:benchmark-*:1.2.0-alpha13
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha13 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มพารามิเตอร์ประเภทโปรไฟล์เมื่อสร้างโปรไฟล์พื้นฐานเพื่อรองรับฟีเจอร์โปรไฟล์สำหรับธุรกิจขนาดเล็กที่กําลังจะมีให้บริการ (Ie20d7, b/275093123)
- เพิ่ม
TraceMetric
API เวอร์ชันทดลองใหม่สำหรับการกำหนดเมตริกที่กำหนดเองทั้งหมดตามเนื้อหาของการติดตาม Perfetto (I4ce31, b/219851406) - เพิ่มเมตริกการทดสอบเพื่อระบุจํานวนการขัดข้องของหน้าเว็บระหว่างการทดสอบประสิทธิภาพ (I48db0)
เวอร์ชัน 1.2.0-alpha12
22 มีนาคม 2023
androidx.benchmark:benchmark-*:1.2.0-alpha12
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha12 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ปลั๊กอิน Gradle ของโปรไฟล์พื้นฐานใหม่เปิดตัวเป็นเวอร์ชันอัลฟ่าแล้ว ซึ่งทำให้สร้างโปรไฟล์พื้นฐานได้ง่ายขึ้นและลดความซับซ้อนของเวิร์กโฟลว์ของนักพัฒนาแอป
การเปลี่ยนแปลง API
- นำการรองรับการติดตาม Perfetto ใน API 21 และ 22 ออก ซึ่งรวมถึงทั้ง Microbenchmark และ
PerfettoTrace
API เวอร์ชันทดลอง ก่อนหน้านี้การเชื่อมต่อ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
เมื่อตรวจสอบการมีอยู่ของ powerstats ใน 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 ของโปรไฟล์พื้นฐานในเอาต์พุตของ Studio (I958d1, b/261781624)
- ตอนนี้ระบบจะจดจำ Arm emulator api 33 ได้อย่างถูกต้องเมื่อพยายามเรียกใช้การทดสอบประสิทธิภาพแบบมาโคร และจะพิมพ์คำเตือนอย่างถูกต้อง (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 (หรือที่เรียกว่าร่องรอยของระบบ) เป็นส่วนหนึ่งของการทดสอบ เพื่อตรวจสอบลักษณะการทํางานและประสิทธิภาพการทดสอบ (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)
- แก้ไขคำสั่งเชลล์หลายรายการที่ไม่สำเร็จเมื่อเกิดข้อผิดพลาด พิมพ์ 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 ของแอปพลิเคชัน (ไม่ใช่ของข้อมูลเปรียบเทียบ)
<!-- workaround bug in profileinstaller 1.3.0-alpha02, remove when updating to alpha03+ -->
<receiver
android:name="androidx.profileinstaller.ProfileInstallReceiver"
android:permission="android.permission.DUMP"
android:exported="true">
<intent-filter>
<action android:name="androidx.profileinstaller.action.BENCHMARK_OPERATION" />
</intent-filter>
</receiver>
เวอร์ชัน 1.2.0-alpha07
9 พฤศจิกายน 2022
androidx.benchmark:benchmark-*:1.2.0-alpha07
ได้รับการปล่อยแล้ว เวอร์ชัน 1.2.0-alpha07 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
PowerMetric
API สําหรับการวัดพลังงานและกำลังไฟฟ้าในมาโครเบนช์มาร์ก (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
สำหรับเวลาทั้งหมดในการทดสอบประสิทธิภาพแบบมาโครที่ใช้ในการวัดอัตราเงินเฟ้อ นอกจากนี้ เรายังได้นําข้อกําหนด API ระดับ 29 ออกด้วย เนื่องจากTraceSectionMetric
ทํางานร่วมกับandroidx.tracing.Trace
กลับไปที่ระดับ API ที่ต่ำกว่าได้โดยใช้forceEnableAppTracing
ภายในแอปเป้าหมาย (Id7b68, b/231455742)
การแก้ไขข้อบกพร่อง
- ปรับปรุงความปลอดภัยของคำสั่งเชลล์ภายในทั้งหมดโดยการตรวจสอบเอาต์พุต/ข้อผิดพลาดทั้งหมด (I5984d, b/255402908, b/253094958)
- ระบุอุปกรณ์ในคำสั่ง
adb pull
ของโปรไฟล์พื้นฐาน เพื่อให้คัดลอกคำสั่งดึงข้อมูลได้ง่ายๆ หากมีอุปกรณ์หลายเครื่องเชื่อมต่ออยู่ (โปรแกรมจำลองได้สูงสุด 1 เครื่อง) (I6ac6c, b/223359380) - เพิ่มข้อผิดพลาดหากไม่ได้ตั้งค่า apk ทดสอบการวัดประสิทธิภาพแบบแมโครเป็นเครื่องมือวัดผลด้วยตนเอง ข้อผิดพลาดนี้ทําให้ทำการทดสอบประสิทธิภาพแบบมาโครจากภายในกระบวนการของแอปเป้าหมายไม่ได้ ในระหว่างดำเนินการ 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
ลงในการทดสอบประสิทธิภาพแบบมาโคร (มีให้บริการแล้วในการทดสอบประสิทธิภาพแบบไมโคร) เพื่อการพัฒนาในเครื่องที่เร็วขึ้น และการตรวจสอบการทำงานอัตโนมัติของแอป (เช่น ในการทดสอบก่อนส่ง) ซึ่งจะลบล้างจำนวนรอบเป็น 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()
, การนําทางตามกิจกรรมในแอป หรือคําสั่งเชลล์ (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 ในแอปที่แสดง (I2cc7f)
เพิ่มอาร์กิวเมนต์เครื่องมือวัด
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
การเปลี่ยนแปลง API
- เพิ่ม
PowerMetric
ใหม่สําหรับการวัดงานด้านพลังงานและกำลังไฟฟ้าในข้อมูลการเปรียบเทียบ (I9f39b, b/220183779) - เพิ่มโหมดการคอมไพล์ใหม่
CompilationMode.Ignore
เพื่อข้ามการรีเซ็ตและการคอมไพล์โปรไฟล์ (Ibbcf8, b/230453509) - เพิ่มพารามิเตอร์ใหม่ลงใน
BaselineProfileRule#collectBaselineProfile
เพื่อกรองไฟล์เอาต์พุตตามชื่อแพ็กเกจ (If7338, b/220146561) - ช่วยให้นักพัฒนาแอปคายประจุอุปกรณ์เพื่อวัดการสิ้นเปลืองพลังงานได้ (I6a6cb)
- เพิ่มความสามารถในการล้างแคชเชดเดอร์ใน
MacrobenchmarkScope
(I32122) - ช่วยให้นักพัฒนาแอปกำหนดค่าการแสดงประเภทเมตริกและรายละเอียดหมวดหมู่ระบบย่อยที่ต้องการได้ (I810c9)
- ก่อนหน้านี้
UnsupportedOperationException
จะแสดงในข้อมูลการเปรียบเทียบหากทํางานในอุปกรณ์ที่ไม่รองรับ ตอนนี้ UOE จะแสดงขึ้นก็ต่อเมื่อมีการใช้เมตริกในอุปกรณ์ที่ไม่รองรับ (เช่นPowerMetric.configure
) (I5cf20, b/227229375) - เพิ่ม
TotalPowerMetric
และTotalEnergyMetric
สำหรับวัดกำลังไฟฟ้าและพลังงานทั้งหมดในแต่ละหมวดหมู่ของระบบในข้อมูลการทดสอบประสิทธิภาพแบบแมโคร (I3b26b, b/224557371)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่การรีเซ็ตเมธอดที่คอมไพล์แล้วไม่ถูกต้องระหว่างการทดสอบประสิทธิภาพแบบมาโครแต่ละครั้งในบิลด์ที่ไม่ได้รูท แต่วิธีนี้จำเป็นต้องติดตั้ง APK อีกครั้งทุกครั้งที่ดำเนินการซ้ำ ซึ่งจะล้างข้อมูลแอปพลิเคชันสำหรับแต่ละการทดสอบประสิทธิภาพแบบแมโคร (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
ซึ่งจะเกิดขึ้นในอุปกรณ์ Android11 (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 ซึ่งช่วยให้คุณวัดการโต้ตอบทั้งแอปได้ เช่น การเริ่มต้นและการเลื่อน จะช่วยให้คุณบันทึกร่องรอยและวัดส่วนการติดตามได้
รองรับโปรไฟล์พื้นฐาน
CompilationMode.Partial
เพื่อวัดประสิทธิภาพของโปรไฟล์พื้นฐาน@BaselineProfileRule
เพื่อสร้างโปรไฟล์พื้นฐานโดยอัตโนมัติสําหรับเส้นทางของผู้ใช้ที่สําคัญ
การรองรับเมตริกการจัดสรรและการโปรไฟล์ระหว่างการเรียกใช้การทดสอบประสิทธิภาพระดับไมโคร
เวอร์ชัน 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 ที่มีการจัดการเมื่อสร้างโปรไฟล์พื้นฐานด้วยการทดสอบประสิทธิภาพแบบมาโคร (aosp/2062228, b/228926421)
เวอร์ชัน 1.1.0-rc02
11 พฤษภาคม 2022
androidx.benchmark:benchmark-*:1.1.0-rc02
ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-rc02 มีการคอมมิตเหล่านี้
- โปรดทราบว่ารุ่นนี้มีการเปลี่ยนแปลงลักษณะการทํางาน เนื่องจากตอนนี้ระบบจะติดตั้งแอปใหม่ทั้งหมดระหว่างการเปรียบเทียบแต่ละครั้งเพื่อให้การวัดผลถูกต้องแม่นยำ
การแก้ไขข้อบกพร่อง/การเปลี่ยนแปลงลักษณะการทำงาน
แก้ไขปัญหาที่การคอมไพล์แอปไม่ได้รีเซ็ตอย่างถูกต้องระหว่างการทดสอบประสิทธิภาพแบบมาโคร และไม่ได้รีเซ็ตเลยในบิลด์ที่ไม่ได้รูท วิธีนี้ช่วยแก้ไขได้หลายกรณีที่การทดสอบหลายครั้งส่งผลให้
CompilationMode
ส่งผลต่อค่าการวัดเพียงเล็กน้อยหรือไม่ส่งผลเลย วิธีแก้ปัญหานี้คือแอปเป้าหมายจะติดตั้งวิธีการทดสอบแต่ละรายการอีกครั้งโดยสมบูรณ์ ซึ่งจะล้างข้อมูลแอปพลิเคชันระหว่างการทดสอบแบบมาโครแต่ละครั้ง (I31c74, b/230665435)เนื่องจากการดำเนินการนี้ป้องกันไม่ให้แอปตั้งค่าสถานะก่อนการทดสอบ คุณจึงข้ามการคอมไพล์ / การติดตั้งอีกครั้งเพื่อแก้ปัญหานี้ได้ เช่น คุณสามารถคอมไพล์เป้าหมายอย่างสมบูรณ์ด้วยคำสั่งเชลล์
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
แชร์โมดูลระหว่างการทดสอบประสิทธิภาพแบบแมโครกับการทดสอบการสร้างโปรไฟล์พื้นฐานได้โดยการเพิ่มอาร์กิวเมนต์การวัด
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)
- แก้ไขเมตริกการเริ่มต้นสําหรับการทดสอบประสิทธิภาพแบบมาโครเมื่อใช้
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)
กรองกฎโปรไฟล์พื้นฐานเพื่อกําหนดเป้าหมาย 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
ลงในคลังการทดสอบประสิทธิภาพแบบมาโครภายใต้ Flag การทดสอบเพื่อให้ตรวจจับเสียงที่เล่นไม่ทันได้ (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() // ... } ) }
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่การติดตามโปรไฟล์ไมโครเบนช์จะอัปเดตไม่สำเร็จในการเรียกใช้ครั้งต่อๆ ไปเมื่อลิงก์ไว้ในเอาต์พุตของ 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 มีการคอมมิตเหล่านี้
การแก้ไขข้อบกพร่อง
- ตอนนี้ผลลัพธ์ของโปรไฟล์การติดตามเมธอด / การสุ่มตัวอย่างสแต็กการวัดประสิทธิภาพระดับไมโครเบนช์มาร์กจะลิงก์อยู่ในเอาต์พุตของ 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
เป็น Enumeration เพื่อความชัดเจน (Id67ea)
เวอร์ชัน 1.1.0-alpha13
15 ธันวาคม 2021
androidx.benchmark:benchmark-*:1.1.0-alpha13
ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-alpha13 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการติดตามระบบที่มีค่าใช้จ่ายต่ำไปยังเอาต์พุตการทดสอบประสิทธิภาพแบบไมโครเบนช์ใน Android Q (API 29 ขึ้นไป) โปรดทราบว่าขณะนี้การติดตามนี้ไม่ได้บันทึกการติดตามที่กำหนดเอง (ผ่าน
android.os.Trace
หรือandroidx.tracing
Jetpack API) เพื่อไม่ให้ส่งผลต่อผลลัพธ์ การติดตามนี้ควรมีประโยชน์ในการวินิจฉัยความไม่เสถียร โดยเฉพาะอย่างยิ่งจากแหล่งที่มาภายนอกการเปรียบเทียบ (I298be, b/205636583, b/145598917) - อธิบาย
CompilationModes
เป็น 3 คลาส ได้แก่ Full, None, Partial ก่อนหน้านี้ ไฟล์เหล่านี้มีชื่อไม่สอดคล้องกันตามอาร์กิวเมนต์การคอมไพล์ (ซึ่งตอนนี้เราถือว่ารายละเอียดการติดตั้งใช้งาน) และฟีเจอร์ วิธีนี้ช่วยให้เห็นข้อดีข้อเสีย ชุดค่าผสมที่เป็นไปได้ และลักษณะการทํางานของแพลตฟอร์มแต่ละเวอร์ชันได้ชัดเจนขึ้น (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% ด้วยการเปลี่ยนไปใช้รูปแบบพื้นที่เก็บข้อมูล sched แบบกะทัดรัด (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
- เปิดใช้การทดสอบประสิทธิภาพมาโครการเลื่อนเพื่อเรียกใช้ 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
เพื่อให้แอปที่ใช้โปรไฟล์พื้นฐานเรียกใช้การทดสอบประสิทธิภาพแบบมาโครโดยใช้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 ms (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
ใหม่เพื่อรองรับโปรไฟล์ที่ติดตั้งโดยใช้ไลบรารี ProfileInstaller ของ Jetpack (aosp/1720930)
การแก้ไขข้อบกพร่อง
ตัวอย่างโค้ด Gradle สำหรับการระงับข้อผิดพลาดของข้อมูลการเปรียบเทียบประสิทธิภาพได้รับการอัปเดตให้ใช้ API ที่ไม่ได้เลิกใช้งานซึ่งมีไวยากรณ์ที่รองรับผู้ใช้ .gradle.kts ด้วย
เช่น
testInstrumentationRunnerArguments["androidx.benchmark.suppressErrors"] = "EMULATOR,LOW-BATTERY"
เวอร์ชัน 1.1.0-alpha02
18 พฤษภาคม 2021
การเปรียบเทียบเวอร์ชัน 1.1.0-alpha02 เพิ่มคอมโพเนนต์สำคัญในการเปรียบเทียบ ซึ่งก็คือ Macrobenchmark นอกจากการเปรียบเทียบที่ช่วยให้วัดลูป CPU ได้ การเปรียบเทียบแบบมาโครยังช่วยให้คุณวัดการโต้ตอบทั้งแอป เช่น การเริ่มต้นและการเลื่อน และบันทึกร่องรอยได้ ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของไลบรารี
androidx.benchmark:benchmark-*:1.1.0-alpha02
ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-alpha02 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
เพิ่มอาร์ติแฟกต์การทดสอบประสิทธิภาพแบบมาโคร (androidx.benchmark:benchmark-macro-junit4
และ androidx.benchmark:benchmark-macro
)
- บันทึกเมตริกประสิทธิภาพการเริ่มต้น การสไลด์/ภาพเคลื่อนไหวจากแอปของคุณ ทั้งแบบภายในหรือใน CI
- บันทึกและตรวจสอบร่องรอยจากภายใน Android Studio
การแก้ไขข้อบกพร่อง
- วิธีแก้ปัญหาสิทธิ์เชลล์กับไดเรกทอรีเอาต์พุตใน Android 12 (หมายเหตุ - อาจต้องอัปเดต Android Gradle Plugin เป็น 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 ของ Benchmark มีค่าเริ่มต้นสำหรับการตั้งค่าที่ง่ายขึ้น ดังนี้
testBuildType
มีการตั้งค่าเป็นรุ่นโดยค่าเริ่มต้น เพื่อหลีกเลี่ยงการใช้การพึ่งพาที่มีการตรวจสอบโค้ดในตัว ระบบจะกำหนดค่า buildType ของรุ่นเป็น buildType เริ่มต้นด้วย ซึ่งจะช่วยให้ Android Studio เลือกตัวแปรการสร้างที่ถูกต้องโดยอัตโนมัติเมื่อเปิดโปรเจ็กต์เป็นครั้งแรก (b/138808399)- ใช้
signingConfig.debug
เป็นการกำหนดค่าการรับรองเริ่มต้น (b/153583269)
** การแก้ไขข้อบกพร่อง **
- ลดค่าใช้จ่ายเพิ่มเติมในการเปลี่ยนผ่านช่วงเริ่มต้นอย่างมีนัยสําคัญ ซึ่งการวัดผลครั้งแรกของข้อมูลเปรียบเทียบแต่ละรายการจะสูงกว่ารายการอื่นๆ อย่างผิดธรรมชาติ ปัญหานี้เห็นได้ชัดมากขึ้นในเบนช์มาร์กที่มีค่าน้อยมาก (1 ไมโครวินาทีหรือน้อยกว่า) (b/142058671)
- แก้ไขข้อผิดพลาด
InstrumentationResultParser
ที่พิมพ์สำหรับแต่ละการทดสอบประสิทธิภาพเมื่อเรียกใช้จากบรรทัดคำสั่ง (I64988, b/154248456)
ปัญหาที่ทราบ
- การเรียกใช้ Benchmark ของ gradle ในบรรทัดคำสั่งจะไม่แสดงผลลัพธ์โดยตรง คุณสามารถแก้ปัญหานี้ได้โดยเรียกใช้ผ่าน 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 โดยตรง หรือใน Continuous Integration เพื่อดูประสิทธิภาพของโค้ดเมื่อเวลาผ่านไปและป้องกันไม่ให้ประสิทธิภาพลดลง
ฟีเจอร์หลักๆ มีดังนี้
- การทำให้นาฬิกาเสถียร
- การจัดลําดับความสําคัญของชุดข้อความอัตโนมัติ
- การรองรับการทดสอบประสิทธิภาพ UI เช่น ในตัวอย่าง RecyclerView
- การอุ่นเครื่องและการวนซ้ำที่รองรับ 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)
แก้ไขข้อบกพร่อง
- เพิ่มการพึ่งพา
androidx.annotation:android-experimental-lint
เพื่อให้โค้ด Java แสดงข้อผิดพลาดของ Lint อย่างถูกต้องเมื่อไม่ได้ใช้ API เวอร์ชันทดลอง ซึ่งคล้ายกับสิ่งที่คำอธิบายประกอบเวอร์ชันทดลองของ Kotlin มีให้สำหรับผู้เรียกใช้ Kotlin - ตอนนี้สามารถตรวจหาการใช้อาร์กิวเมนต์การทดสอบ
additionalTestOutputDir
สำหรับเอาต์พุตใน Android Gradle Plugin 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 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มการตรวจสอบการใช้แพ็กเกจเก่าอย่างไม่ถูกต้องสำหรับโปรแกรมรันทดสอบ ซึ่งตอนนี้จะแสดงข้อความแสดงข้อผิดพลาดที่เป็นประโยชน์มากขึ้น
การเปลี่ยนแปลง API
- ตอนนี้คำอธิบายประกอบเวอร์ชันทดลอง
ExperimentalAnnotationReport
เป็นแบบสาธารณะอย่างถูกต้องแล้ว ตอนนี้การใช้ BenchmarkState#report API เวอร์ชันทดลองต้องใช้คำอธิบายประกอบนี้
เวอร์ชัน 1.0.0-alpha05
5 กันยายน 2019
androidx.benchmark:benchmark-common:1.0.0-alpha05
, androidx.benchmark:benchmark-gradle-plugin:1.0.0-alpha05
และ androidx.benchmark:benchmark-junit4:1.0.0-alpha05
เผยแพร่แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่
การเปลี่ยนแปลง API
- ตอนนี้
BenchmarkState.reportData
API มีสถานะเป็นเวอร์ชันทดลอง
แก้ไขข้อบกพร่อง
- แก้ไขสคริปต์การล็อกนาฬิกา ซึ่งจะใช้งานไม่ได้ในอุปกรณ์ที่ไม่มียูทิลิตีเชลล์
cut
หรือexpr
- แก้ไขปัญหาเกี่ยวกับงาน
./gradlew lockClocks
ที่จะค้างบนอุปกรณ์ที่รูทด้วยยูทิลิตี su เวอร์ชันเก่าซึ่งไม่รองรับ Flag-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
มีคลาสที่ต้องพึ่งพา 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 อื่นๆ ซึ่งก็คือ เวอร์ชันเสถียร (มีข้อยกเว้นที่พบได้น้อยมาก) 1 ครั้งในรุ่นเบต้า และแก้ไขในรุ่นสุดท้าย โดยจะมีการเพิ่มเฉพาะในรุ่นย่อย และการเปลี่ยนแปลง/การนำออกในรุ่นหลัก
การเปลี่ยนแปลง API
สคีมา JSON ที่ได้รับการปรับปรุงใหม่ การเปลี่ยนแปลงเพิ่มเติมในสคีมา JSON มีแนวโน้มที่จะจำกัดอยู่ที่การเพิ่มข้อมูลต่อไปนี้
- จัดโครงสร้างออบเจ็กต์ผลลัพธ์ใหม่เพื่อรองรับกลุ่มเมตริกเพิ่มเติมในอนาคต (b/132713021)
- เพิ่มข้อมูลบริบทการทดสอบ เช่น ข้อมูลอุปกรณ์และบิลด์ รวมถึงข้อมูลว่านาฬิกาล็อกอยู่หรือไม่ ลงในออบเจ็กต์ระดับบนสุด (b/132711920)
- ตอนนี้ชื่อเมตริกเวลาจะมี "ns" อยู่ในชื่อแล้ว (b/132714527)
- เพิ่มสถิติเพิ่มเติมต่อเมตริกที่รายงาน (สูงสุด ค่ามัธยฐาน ต่ำสุด) และนําสถิติสรุป "นาโน" แบบง่ายออก (b/132713851)
นำเอาต์พุต XML ออกแล้ว (b/132714414)
นำการตรวจหาการจำกัดความร้อนออกจาก
BenchmarkState.reportData
API แล้ว (b/132887006)
แก้ไขข้อบกพร่อง
- แก้ไข
./gradlew lockClocks
ไม่ติดอยู่ในอุปกรณ์ระบบปฏิบัติการล่าสุดบางรุ่น (b/133424037) - ปิดใช้การตรวจจับการจำกัดความเร็วสำหรับโปรแกรมจำลอง (b/132880807)
เวอร์ชัน 1.0.0-alpha01
7 พฤษภาคม 2019
androidx.benchmark:benchmark:1.0.0-alpha01
ได้รับการปล่อยแล้ว คอมมิตที่รวมอยู่ในเวอร์ชันนี้ดูได้ที่นี่