โดยค่าเริ่มต้น ไมโครเบนช์มาร์กจะให้ข้อมูลเกี่ยวกับเวลาและการจัดสรรของโค้ดที่ดำเนินการ หากต้องการตรวจสอบสาเหตุที่โค้ดที่วัดทำงานช้า ให้ตรวจสอบร่องรอยเมธอด ซึ่งระบบจะบันทึกไว้โดยค่าเริ่มต้นในเวอร์ชันระบบปฏิบัติการที่รองรับ หรือเลือกการกำหนดค่าการสร้างโปรไฟล์อื่นๆ
หากต้องการเลือกการกำหนดค่าเครื่องมือสร้างโปรไฟล์ ให้เพิ่มอาร์กิวเมนต์ตัวรันการวัด 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' } }
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 เพื่อสุ่มตัวอย่าง Call Stack ของแอป รวมถึงโค้ด 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 ปิดอยู่
- อาร์กิวเมนต์การวัดประสิทธิภาพระดับไมโคร
- เรียกใช้การเปรียบเทียบในการรวมอย่างต่อเนื่อง