อาร์กิวเมนต์ของเครื่องมือวัดประสิทธิภาพแบบมาโคร

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

android {
    defaultConfig {
        // ...
        testInstrumentationRunnerArguments["androidx.benchmark.dryRunMode.enable"] = "true"
    }
}

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

  1. แก้ไขการกำหนดค่าการเรียกใช้โดยคลิกแก้ไข แล้วคลิกการกำหนดค่า
    แก้ไขการกำหนดค่าการเรียกใช้
    รูปที่ 1 แก้ไขการกำหนดค่าการเรียกใช้
  2. แก้ไขอาร์กิวเมนต์การวัดโดยคลิก เพิ่มเติมตาม อาร์กิวเมนต์การวัด
    แก้ไขอาร์กิวเมนต์การวัด
    รูปที่ 2 แก้ไขอาร์กิวเมนต์การวัดผล
  3. เพิ่มอาร์กิวเมนต์การวัดผลที่จำเป็นโดยคลิก เพิ่มในส่วนการวัดผล พารามิเตอร์เพิ่มเติม
    เพิ่มอาร์กิวเมนต์การวัดผลที่จำเป็น
    รูปที่ 3 เพิ่มอาร์กิวเมนต์ การวัดผลที่จำเป็น

หากเรียกใช้ Macrobenchmark จากบรรทัดคำสั่ง ให้ใช้ -P android.testInstrumentationRunnerArguments.[name of the argument]

./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile

หากเรียกใช้คำสั่ง am instrument โดยตรง (ซึ่งอาจเกิดขึ้นในสภาพแวดล้อมการทดสอบ CI) ให้ส่งอาร์กิวเมนต์ไปยัง am instrument ด้วย -e ดังนี้

adb shell am instrument -e androidx.benchmark.enabledRules BaselineProfile -w com.example.macrobenchmark/androidx.test.runner.AndroidJUnitRunner

ดูข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่าการเปรียบเทียบใน CI ได้ที่ การเปรียบเทียบใน CI

androidx.benchmark.compilation.enabled

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

  • ประเภทอาร์กิวเมนต์: บูลีน
  • ค่าเริ่มต้นคือ true

androidx.benchmark.dryRunMode.enable

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

  • ประเภทอาร์กิวเมนต์: บูลีน
  • ค่าเริ่มต้นคือ false

androidx.benchmark.enabledRules

อนุญาตให้กรองการเรียกใช้เป็นการทดสอบประเภทเดียวเท่านั้น ได้แก่ การสร้างโปรไฟล์พื้นฐานหรือ การทดสอบมาโครเบนช์มาร์ก ระบบยังรองรับรายการที่คั่นด้วยคอมมาด้วย

  • ประเภทอาร์กิวเมนต์: สตริง
  • ตัวเลือกที่มี
    • Macrobenchmark
    • BaselineProfile
  • ค่าเริ่มต้นคือ ไม่ได้ระบุ

androidx.benchmark.fullTracing.enable

เปิดใช้ androidx.tracing.perfetto Tracepoint เช่น การติดตามการคอมโพสของ Jetpack Compose

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

  • ประเภทอาร์กิวเมนต์: บูลีน
  • ค่าเริ่มต้น: false

androidx.benchmark.killExistingPerfettoRecordings

โดยค่าเริ่มต้น Benchmark จะหยุดการบันทึก Perfetto (การติดตามระบบ) ที่มีอยู่เมื่อ เริ่มการติดตามใหม่เพื่อลดการรบกวน หากต้องการปิดใช้ลักษณะการทำงานนี้ ให้ส่ง false

  • ประเภทอาร์กิวเมนต์: บูลีน
  • ค่าเริ่มต้นคือ true

androidx.benchmark.profiling.mode

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

  • ประเภทอาร์กิวเมนต์: สตริง
  • ตัวเลือกที่มี
    • MethodTracing
    • StackSampling
    • None
  • ค่าเริ่มต้นคือ None

androidx.benchmark.startupProfiles.enable

ช่วยให้คุณปิดใช้การสร้างโปรไฟล์เริ่มต้นระหว่างการเปรียบเทียบได้

  • ประเภทอาร์กิวเมนต์: บูลีน
  • ค่าเริ่มต้นคือ true

androidx.benchmark.suppressErrors

ยอมรับรายการข้อผิดพลาดที่คั่นด้วยคอมมาเพื่อเปลี่ยนเป็นคำเตือน

  • ประเภทอาร์กิวเมนต์: รายการสตริง
  • ตัวเลือกที่มี

    • DEBUGGABLE

      ข้อผิดพลาด DEBUGGABLE แสดงว่าแพ็กเกจเป้าหมายทำงานโดยมี debuggable=true ในไฟล์ Manifest ซึ่งจะลดประสิทธิภาพขณะรันไทม์ลงอย่างมาก เพื่อรองรับฟีเจอร์การแก้ไขข้อบกพร่อง หากต้องการหลีกเลี่ยงข้อผิดพลาดนี้ ให้เรียกใช้ การทดสอบประสิทธิภาพด้วย debuggable=false อาร์กิวเมนต์ที่แก้ไขข้อบกพร่องได้ส่งผลต่อ ความเร็วในการดำเนินการในลักษณะที่การปรับปรุงเกณฑ์มาตรฐานอาจไม่ส่งผล ต่อประสบการณ์ของผู้ใช้จริง หรืออาจทำให้ประสิทธิภาพของรุ่นที่เผยแพร่ลดลง

    • LOW-BATTERY

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

    • EMULATOR

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

    • NOT-PROFILEABLE

      แพ็กเกจเป้าหมาย $packageName ทำงานโดยไม่มี <profileable shell=true> ต้องเปิดใช้ Profileable ใน Android 10 และ 11 เพื่อให้ Macrobenchmark จับข้อมูลการติดตามโดยละเอียดจากกระบวนการเป้าหมายได้ เช่น ส่วนการติดตามระบบที่กําหนดไว้ในแอปหรือ ไลบรารี โปรดระงับข้อผิดพลาดนี้ด้วยความระมัดระวังเป็นอย่างยิ่ง

    • METHOD-TRACING-ENABLED

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

  • ค่าเริ่มต้น: รายการที่ว่างเปล่า

additionalTestOutputDir

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

  • ประเภทอาร์กิวเมนต์: สตริงเส้นทาง
  • ค่าเริ่มต้นคือ ไดเรกทอรีภายนอกของ APK สำหรับทดสอบ

ผู้ฟัง

คุณอาจได้รับผลการเปรียบเทียบที่ไม่สอดคล้องกันหากมีการเรียกใช้งานเบื้องหลังที่ไม่เกี่ยวข้องขณะที่การเปรียบเทียบกำลังทำงาน

หากต้องการปิดใช้การทำงานเบื้องหลังระหว่างการเปรียบเทียบ ให้ตั้งค่าlistener ประเภทอาร์กิวเมนต์ของเครื่องมือเป็น androidx.benchmark.junit4.SideEffectRunListener

  • ประเภทอาร์กิวเมนต์: สตริง
  • ตัวเลือกที่มี
    • androidx.benchmark.junit4.SideEffectRunListener
  • ค่าเริ่มต้น: ไม่ได้ระบุ