โดยค่าเริ่มต้น มิโครเบนช์มาร์กจะแสดงข้อมูลเกี่ยวกับเวลาและการจัดสรรของโค้ดที่ดำเนินการ หากต้องการตรวจสอบสาเหตุที่โค้ดที่วัดได้ทํางานช้า ให้ตรวจสอบการติดตามเมธอดซึ่งระบบจะบันทึกไว้โดยค่าเริ่มต้นในเวอร์ชันระบบปฏิบัติการที่รองรับ หรือเลือกการกําหนดค่าการโปรไฟล์อื่นๆ
หากต้องการเลือกการกำหนดค่าเครื่องมือวิเคราะห์ ให้เพิ่มอาร์กิวเมนต์เครื่องมือรันไทม์การวัดค่า
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 ให้เลือกลิงก์การติดตามเมธอดหรือการติดตามการสุ่มตัวอย่างสแต็กในผลลัพธ์การทดสอบประสิทธิภาพระดับไมโคร
MethodTracing
การติดตามเมธอดมีประโยชน์เมื่อคุณพยายามเพิ่มประสิทธิภาพโค้ด เนื่องจากช่วยระบุเมธอดที่ใช้เวลาในการเรียกใช้นานกว่าเมธอดอื่นๆ ได้ จากนั้นคุณสามารถมุ่งเน้นที่การเพิ่มประสิทธิภาพวิธีการที่ส่งผลต่อประสิทธิภาพมากที่สุด
การจัดเก็บโปรไฟล์จะเกิดขึ้นตามลําดับหลังการวัดโค้ด เพื่อให้การทดสอบแสดงทั้งเวลาและผลการจัดเก็บโปรไฟล์ที่แม่นยํา
การติดตามเมธอดจะเปิดอยู่โดยค่าเริ่มต้น
StackSampling
นอกจากนี้ การติดตามตัวอย่างยังช่วยระบุเมธอดที่มีค่าใช้จ่ายสูงได้โดยไม่ต้องเสียค่าใช้จ่ายด้านประสิทธิภาพของการติดตามเมธอด อย่างไรก็ตาม หากแอปเข้าสู่เมธอดหลังจากบันทึกสแต็กการเรียกแล้ว และเมธอดออกก่อนการบันทึกครั้งถัดไป ระบบจะไม่บันทึกการเรียกเมธอด หากต้องการติดตามเมธอดที่มีวงจรสั้นๆ อย่างถูกต้อง ให้ใช้การติดตามเมธอดแทนการติดตามตัวอย่าง
เมื่อใช้การสุ่มตัวอย่างสแต็ก การเปรียบเทียบจะสุ่มตัวอย่างสแต็กการเรียกใช้หลังจากการอุ่นเครื่องเสร็จสมบูรณ์ คุณสามารถควบคุมลักษณะการสุ่มตัวอย่าง เช่น ความถี่ในการสุ่มตัวอย่างและระยะเวลาการสุ่มตัวอย่างได้โดยใช้อาร์กิวเมนต์เครื่องมือวัด
ใน Android 10 (API 29) ขึ้นไป การสุ่มตัวอย่างสแต็กจะใช้ Simpleperf เพื่อสุ่มตัวอย่างสแต็กการเรียกของแอป รวมถึงโค้ด 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 ปิดอยู่
- อาร์กิวเมนต์เครื่องมือวัดประสิทธิภาพระดับไมโคร
- เรียกใช้การเปรียบเทียบในการผสานรวมอย่างต่อเนื่อง