โดยค่าเริ่มต้น มิโครเบนช์มาร์กจะแสดงข้อมูลเกี่ยวกับเวลาและการจัดสรรของโค้ดที่ดำเนินการ หากต้องการตรวจสอบสาเหตุที่โค้ดที่วัดได้ทํางานช้า ให้ตรวจสอบการติดตามเมธอดซึ่งระบบจะบันทึกไว้โดยค่าเริ่มต้นในเวอร์ชันระบบปฏิบัติการที่รองรับ หรือเลือกการกําหนดค่าการโปรไฟล์อื่นๆ
หากต้องการเลือกการกำหนดค่าเครื่องมือวิเคราะห์ ให้เพิ่มอาร์กิวเมนต์เครื่องมือรันไทม์การวัดค่า
androidx.benchmark.profiling.mode
โดยใช้อาร์กิวเมนต์ MethodTracing
(ค่าเริ่มต้น), StackSampling
หรือ None
อย่างใดอย่างหนึ่ง ดังที่แสดงในตัวอย่างข้อมูลต่อไปนี้
ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกได้ที่บันทึกเมธอด Java/Kotlin
MethodTracing
เทียบเท่ากับการติดตาม และ StackSampling
เทียบเท่ากับการสุ่มตัวอย่างตามที่ระบุไว้ในเอกสารนั้น
android { defaultConfig { // must be one of: 'None', 'StackSampling', or 'MethodTracing' testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"]= 'StackSampling' } }
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
ไม่มี
อาร์กิวเมนต์นี้จะไม่บันทึกไฟล์โปรไฟล์ ระบบจะยังคงวัดข้อมูลเกี่ยวกับเวลาและการจัดสรร
แนะนำสำหรับคุณ
อาร์กิวเมนต์ของเครื่องมือวัดประสิทธิภาพระดับไมโคร
Plan to create quality apps and features from the start by understanding best practices and requirements.
การเปรียบเทียบในการผสานรวมแบบต่อเนื่อง
Plan to create quality apps and features from the start by understanding best practices and requirements.