การติดตามการเรียบเรียง

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

Android รองรับการติดตาม 2 ระดับ ได้แก่ การติดตามระบบและวิธีการ การติดตาม

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

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

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

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

ตั้งค่าสำหรับการติดตามองค์ประกอบ

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

  • Android Studio Flamingo
  • UI เขียน: 1.3.0
  • คอมไพเลอร์ของ Compose: 1.3.0

อุปกรณ์หรือโปรแกรมจำลองที่คุณเรียกใช้การติดตามจะต้องอยู่ในระดับ API ขั้นต่ำด้วย 30.

นอกจากนี้ คุณต้องเพิ่มทรัพยากร Dependency ใหม่ใน Compose Runtime Tracing

implementation("androidx.compose.runtime:runtime-tracing:1.0.0-beta01")

เมื่อใช้ทรัพยากร Dependency นี้ เมื่อคุณใช้การติดตามระบบที่มีการจัดองค์ประกอบใหม่ คุณจะเห็นฟังก์ชันที่ประกอบกันได้โดยอัตโนมัติ

ติดตามระบบ

ในการติดตามระบบและดูการติดตามการจัดองค์ประกอบใหม่ในการใช้งานจริง ให้ทำตาม ขั้นตอนเหล่านี้:

  1. เปิดเครื่องมือสร้างโปรไฟล์โดยทำดังนี้

    วันที่ Android Studio - เริ่มทำโปรไฟล์
    รูปที่ 2 Android Studio - เริ่มทำโปรไฟล์
  2. คลิกไทม์ไลน์ของ CPU

    วันที่ เครื่องมือสร้างโปรไฟล์ Android Studio - ไทม์ไลน์ CPU
    รูปที่ 3 เครื่องมือสร้างโปรไฟล์ Android Studio - ไทม์ไลน์ CPU
  3. ไปยัง UI ที่คุณต้องการติดตามในแอป แล้วเลือกระบบ Trace และ Record

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

    วันที่ การติดตามของระบบ
    รูปที่ 5 การติดตามระบบ

    การดับเบิลคลิกที่ Composable ในแผนภูมิจะนำคุณไปยังซอร์สโค้ด

  5. คุณสามารถดู Composable ในแผนภูมิ Flame พร้อมกับไฟล์และบรรทัดได้ด้วย หมายเลข:

    วันที่ แผนภูมิเปลวไฟ
    รูปที่ 6 แผนภูมิ Flame Chart

ข้อควรระวัง

โอเวอร์เฮดของขนาด APK

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

คุณนำสตริงการติดตามออกในบิลด์เวอร์ชันที่ใช้งานจริงได้ด้วยการเพิ่ม กฎ Proguard ต่อไปนี้

-assumenosideeffects public class androidx.compose.runtime.ComposerKt {

   boolean isTraceInProgress();

   void traceEventStart(int,int,int,java.lang.String);

   void traceEventStart(int,java.lang.String);

   void traceEventEnd();

}

ฟังก์ชันเหล่านี้อาจมีการเปลี่ยนแปลงในอนาคต แต่จะมีการกล่าวถึงการเปลี่ยนแปลงใดๆ ใน เขียนบันทึกประจำรุ่น

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

ช่วงเวลาที่แม่นยำ

สำหรับการจัดโปรไฟล์ที่ถูกต้อง เช่นเดียวกับการทดสอบประสิทธิภาพใดๆ คุณต้องทำ แอป profileable และ non-debuggable ตามแอปพลิเคชันในโปรไฟล์

บันทึกการติดตามจากเทอร์มินัล

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

เพิ่มทรัพยากร Dependency

ก่อนอื่นให้เพิ่มทรัพยากร Dependency เพิ่มเติมลงในแอป

implementation("androidx.tracing:tracing-perfetto:1.0.0")
implementation("androidx.tracing:tracing-perfetto-binary:1.0.0")

สร้างคำสั่งระเบียน

  1. สร้างคำสั่งระเบียนโดยใช้ใน Perfetto
  2. เพิ่มส่วนแหล่งข้อมูล track_event ด้วยตนเองตามตัวอย่างต่อไปนี้

    adb shell perfetto \
      -c - --txt \
      -o /data/misc/perfetto-traces/trace \
    <<EOF
    buffers: {
        size_kb: 63488
        fill_policy: RING_BUFFER
    }
    buffers: {
        size_kb: 2048
        fill_policy: RING_BUFFER
    }
    data_sources: {
        config {
            name: "track_event"
        }
    }
    duration_ms: 10000
    flush_period_ms: 30000
    incremental_state_config {
        clear_period_ms: 5000
    }
    EOF
    

จับภาพการติดตาม

  1. เปิดแอปและเตรียมส่วนที่ต้องการติดตาม
  2. เปิดใช้การติดตามในแอปด้วยการออกการออกอากาศ

    # set app package variable, e.g. com.google.samples.apps.nowinandroid.debug
    # can be found through `adb shell ps -ef` or `adb shell cmd package list packages`
    package=<your app process>
    
    # issue a broadcast to enable tracing
    adb shell am broadcast \
    -a androidx.tracing.perfetto.action.ENABLE_TRACING \
    $package/androidx.tracing.perfetto.TracingReceiver
    
  3. เริ่มใช้คำสั่งบันทึกที่คุณสร้างไว้ก่อนหน้านี้

เปิดการติดตาม

  1. adb pull <location>การติดตามจากอุปกรณ์ (ตำแหน่งที่ระบุไว้ใน คำสั่งระเบียน)

  2. เปิดใน Perfetto

จับภาพการติดตามด้วย Jetpack Macrobenchmark

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

  1. เพิ่มทรัพยากร Dependency เพิ่มเติมต่อไปนี้ในโมดูลทดสอบ Macrobenchmark

    implementation("androidx.tracing:tracing-perfetto:1.0.0")
    implementation("androidx.tracing:tracing-perfetto-binary:1.0.0")
    
  2. เพิ่มอาร์กิวเมนต์การวัด androidx.benchmark.fullTracing.enable=true ก่อนที่จะใช้การเปรียบเทียบ ตรวจสอบการใช้เครื่องมือการเปรียบเทียบแบบมาโคร อาร์กิวเมนต์สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเปรียบเทียบแบบมาโคร อาร์กิวเมนต์ของการวัดคุม

ความคิดเห็น

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