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

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

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

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

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

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

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

androidx.benchmark.dryRunMode.enable

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

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

androidx.benchmark.enabledRules

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

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

androidx.benchmark.junit4.SideEffectRunListener

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

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

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

androidx.benchmark.fullTracing.enable

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

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

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

androidx.benchmark.profiling.mode

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

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

    • METHOD-TRACING-ENABLED

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

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

additionalTestOutputDir

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

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