สร้างโปรไฟล์การเปรียบเทียบย่อย

โดยค่าเริ่มต้น มิโครเบนช์มาร์กจะแสดงข้อมูลเกี่ยวกับเวลาและการจัดสรรของโค้ดที่ดำเนินการ หากต้องการตรวจสอบสาเหตุที่โค้ดที่วัดได้ทํางานช้า ให้เรียกใช้การทดสอบประสิทธิภาพโดยแนบเครื่องมือวิเคราะห์โปรไฟล์ CPU

หากต้องการเลือกการกำหนดค่าเครื่องมือวิเคราะห์ ให้เพิ่มอาร์กิวเมนต์เครื่องมือวัด androidx.benchmark.profiling.mode กับอาร์กิวเมนต์ MethodTracing, StackSampling หรือ None รายการใดรายการหนึ่งตามที่แสดงในข้อมูลโค้ดต่อไปนี้

ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกได้ที่เลือกการกำหนดค่าการบันทึก MethodTracing เทียบเท่ากับ "Trace Java Methods" และ StackSampling เทียบเท่ากับ "Sample Java Methods" ตามที่ระบุไว้ในเอกสารดังกล่าว

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 หากต้องการตรวจสอบผลลัพธ์ของโปรไฟล์ในเครื่องมือวิเคราะห์ CPU ใน 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 วินาที

ไม่มี

อาร์กิวเมนต์นี้จะไม่บันทึกไฟล์โปรไฟล์ ระบบจะยังคงวัดข้อมูลเกี่ยวกับเวลาและการจัดสรร