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

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

หากต้องการเลือกการกำหนดค่าเครื่องมือสร้างโปรไฟล์ ให้เพิ่มอาร์กิวเมนต์ของเครื่องมือวัด 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

การติดตามเมธอดมีประโยชน์เมื่อคุณพยายามเพิ่มประสิทธิภาพโค้ด เนื่องจากช่วยระบุเมธอดที่ใช้เวลานานกว่าเมธอดอื่นๆ ในการเรียกใช้ได้ จากนั้นคุณจะ มุ่งเน้นการเพิ่มประสิทธิภาพวิธีที่มีผลต่อประสิทธิภาพมากที่สุดได้

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

การติดตามเมธอดจะเปิดอยู่โดยค่าเริ่มต้น

หมายเหตุ: ในระบบปฏิบัติการ Android และ ART บางเวอร์ชัน การติดตามเมธอดจะปิดอยู่โดยค่าเริ่มต้น ในกรณีเหล่านี้ Android Studio จะแสดงคำเตือน

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

ไม่มี

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