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

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

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

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

ดึงดูด

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

เมธอดติดตาม

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

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

สแต็กแซมพลิง

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

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

ใน Android 10 (API 29) ขึ้นไป การสุ่มตัวอย่างสแต็กจะใช้ Simpleperf เพื่อสุ่มตัวอย่าง Calltack ของแอป รวมถึงโค้ด C++ ใน Android 9 (API 28) และต่ำกว่า ระบบจะใช้ Debug.startMethodTracingSampling เพื่อบันทึกสแต็กตัวอย่าง

คุณกำหนดค่าโหมดการทำโปรไฟล์นี้ได้โดยเพิ่มเครื่องมืออื่น อาร์กิวเมนต์:

  • androidx.benchmark.profiling.sampleFrequency

    • จำนวนตัวอย่างสแต็กที่จะบันทึกต่อวินาที
    • ประเภทอาร์กิวเมนต์: จำนวนเต็ม
    • ค่าเริ่มต้นคือ 1,000 ตัวอย่างต่อวินาที
  • androidx.benchmark.profiling.sampleDurationSeconds

    • ระยะเวลาของการเปรียบเทียบ
    • ประเภทอาร์กิวเมนต์: จำนวนเต็ม
    • ค่าเริ่มต้นคือ 5 วินาที

ไม่มี

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