โดยค่าเริ่มต้น Microbenchmark จะให้ข้อมูลเกี่ยวกับเวลาและการจัดสรรของโค้ดที่ดำเนินการ หากต้องการตรวจสอบว่าเหตุใดโค้ดที่วัดผลจึงทำงานช้า ให้ตรวจสอบการติดตามเมธอด ซึ่งระบบจะบันทึกโดยค่าเริ่มต้นในเวอร์ชันระบบปฏิบัติการที่รองรับ หรือเลือกการกำหนดค่าการสร้างโปรไฟล์อื่นๆ
หากต้องการเลือกการกำหนดค่าโปรไฟล์เลอร์ ให้เพิ่มอาร์กิวเมนต์ของเครื่องมือเรียกใช้การวัดประสิทธิภาพ
androidx.benchmark.profiling.mode
โดยมีอาร์กิวเมนต์ใดอาร์กิวเมนต์หนึ่งต่อไปนี้
MethodTracing
(ค่าเริ่มต้น)
StackSampling
หรือ None
ดังที่แสดงใน
ข้อมูลโค้ดต่อไปนี้
ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกได้ที่บันทึกเมธอด Java/Kotlin
MethodTracing
เทียบเท่ากับการติดตาม และ StackSampling
เทียบเท่ากับการสุ่มตัวอย่างตามที่กำหนดไว้ในเอกสารนั้น
Groovy
android { defaultConfig { // must be one of: 'None', 'StackSampling', or 'MethodTracing' testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"]= 'StackSampling' } }
Kotlin
android { defaultConfig { // must be one of: 'None', 'StackSampling', or 'MethodTracing' testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"] = "StackSampling" } }
เมื่อทำโปรไฟล์การเปรียบเทียบ ระบบจะคัดลอกไฟล์เอาต์พุต .trace
ไปยังโฮสต์ใน
ไดเรกทอรี พร้อมกับผลลัพธ์ JSON หากต้องการตรวจสอบผลการสร้างโปรไฟล์ใน
Android Studio ให้เลือกลิงก์การติดตามเมธอดหรือการติดตามการสุ่มตัวอย่างสแต็ก
ในผลลัพธ์ของ Microbenchmark
MethodTracing
การติดตามเมธอดมีประโยชน์เมื่อคุณพยายามเพิ่มประสิทธิภาพโค้ด เนื่องจากจะช่วยระบุเมธอดที่ใช้เวลานานกว่าเมธอดอื่นๆ ในการเรียกใช้ จากนั้นคุณจะ มุ่งเน้นการเพิ่มประสิทธิภาพวิธีที่มีผลต่อประสิทธิภาพมากที่สุดได้
การสร้างโปรไฟล์จะเกิดขึ้นตามลำดับหลังจากการวัดโค้ด ดังนั้นเอาต์พุตการทดสอบจึงให้ทั้ง การจับเวลาที่แม่นยำและผลลัพธ์การสร้างโปรไฟล์
การติดตามเมธอดจะเปิดอยู่โดยค่าเริ่มต้น
StackSampling
การติดตามตัวอย่างยังช่วยระบุเมธอดที่มีค่าใช้จ่ายสูงได้โดยไม่มี ค่าใช้จ่ายด้านประสิทธิภาพของการติดตามเมธอด อย่างไรก็ตาม หากแอปเข้าสู่เมธอด หลังจากที่บันทึกสแต็กการเรียกใช้แล้ว และเมธอดออกจากระบบก่อนการบันทึกครั้งถัดไป ระบบจะไม่บันทึกการเรียกเมธอด หากต้องการติดตามเมธอดที่มีวงจรการใช้งานสั้นๆ อย่างถูกต้อง ให้ใช้การติดตามเมธอดแทนการติดตามตัวอย่าง
การสุ่มตัวอย่างสแต็กจะทำให้การเปรียบเทียบสุ่มตัวอย่างสแต็กการเรียกใช้หลังจากวอร์มอัพเสร็จสมบูรณ์ คุณสามารถควบคุมลักษณะการทํางานของการสุ่มตัวอย่าง เช่น ความถี่ในการสุ่มตัวอย่าง และระยะเวลาของการสุ่มตัวอย่างได้โดยใช้อาร์กิวเมนต์การวัดประสิทธิภาพ
ใน Android 10 (API 29) ขึ้นไป การสุ่มตัวอย่างสแต็กจะใช้ Simpleperf เพื่อสุ่มตัวอย่าง
Callstack ของแอป ซึ่งรวมถึงโค้ด C++ ใน Android 9 (API 28) และต่ำกว่า จะใช้
Debug.startMethodTracingSampling
เพื่อบันทึกตัวอย่างสแต็ก
คุณกำหนดค่าโหมดการสร้างโปรไฟล์นี้ได้โดยการเพิ่มอาร์กิวเมนต์การวัดผลอีกรายการ
androidx.benchmark.profiling.sampleFrequency
- จำนวนตัวอย่างสแต็กที่จะบันทึกต่อวินาที
- ประเภทอาร์กิวเมนต์: จำนวนเต็ม
- ค่าเริ่มต้นคือ 1,000 ตัวอย่างต่อวินาที
androidx.benchmark.profiling.sampleDurationSeconds
- ระยะเวลาที่จะเรียกใช้การเปรียบเทียบ
- ประเภทอาร์กิวเมนต์: จำนวนเต็ม
- ค่าเริ่มต้นคือ 5 วินาที
androidx.benchmark.profiling.skipWhenDurationRisksAnr
- ข้ามการติดตามเมธอดเมื่อมีแนวโน้มที่จะทำให้เกิด ANR คุณควรเปิดใช้ตัวเลือกนี้สำหรับการเรียกใช้ CI เนื่องจาก ANR อาจทำให้เกิดปัญหาในระหว่างการเรียกใช้ CI เป็นเวลานาน
- ประเภทอาร์กิวเมนต์: บูลีน
- ค่าเริ่มต้นคือ
true
ไม่มี
อาร์กิวเมนต์นี้ไม่ได้บันทึกไฟล์โปรไฟล์ ระบบยังคงวัดผลข้อมูลเกี่ยวกับเวลาและการจัดสรร
แนะนำสำหรับคุณ
- หมายเหตุ: ข้อความลิงก์จะแสดงเมื่อ JavaScript ปิดอยู่
- อาร์กิวเมนต์การวัดประสิทธิภาพขนาดเล็ก
- เรียกใช้การทดสอบประสิทธิภาพในการผสานรวมอย่างต่อเนื่อง