วิธีที่ทีม Android Calendar ปรับปรุงการเริ่มต้นแอปและการกระตุกด้วยโปรไฟล์พื้นฐาน

โปรไฟล์พื้นฐานจะเพิ่มความเร็วในการดำเนินการกับโค้ดได้ 30% ด้วยการหลีกเลี่ยง อินเทอร์พรีเตอร์และ Just-In-Time (JIT) ก้าว สำหรับเส้นทางของผู้ใช้ทั่วไป โปรไฟล์พื้นฐานให้คุณเลือกเส้นทางของผู้ใช้ ต้องการเพิ่มประสิทธิภาพและช่วยปรับปรุงการเริ่มต้นแอป ลดความยุ่งยาก และอื่นๆ ส่งผลให้เมตริกธุรกิจได้รับการปรับปรุงให้ดีขึ้น เช่น การคงผู้ใช้ไว้และการให้คะแนน ดูข้อมูลเพิ่มเติมเกี่ยวกับเกณฑ์พื้นฐาน โปรไฟล์

ทีมปฏิทิน Android ใช้โปรไฟล์พื้นฐานและพบว่ามีแอปประมาณ 20% การปรับปรุงเวลาในการเริ่มต้นระบบ และเฟรมที่ช้าหรือค้างลดลงประมาณ 50% นี่คือ สิ่งที่พวกเขาได้ทำตั้งแต่ต้นจนจบ เพื่อให้ได้ผลลัพธ์ด้านประสิทธิภาพเหล่านี้ จากเหตุผล ตัดสินใจใช้โปรไฟล์พื้นฐานในการวัดผลกระทบ

โปรไฟล์ระบบคลาวด์กับโปรไฟล์พื้นฐาน

ทีมปฏิทิน Android ได้ใช้ระบบคลาวด์ โปรไฟล์ เป็นอีกวิธีการหนึ่งของการเพิ่มประสิทธิภาพที่แนะนำด้วยโปรไฟล์ (PGO) ที่อิงตามผู้ใช้จริง การโต้ตอบกับแอป โปรไฟล์ Cloud และโปรไฟล์พื้นฐานมีดังนี้ เปรียบเทียบ:

ประเภทโปรไฟล์ ตั้งค่า รวมเส้นทางของผู้ใช้ ทำงานได้ดีที่สุดเมื่อฐานผู้ใช้ ได้รับผลกระทบแล้ว เวอร์ชัน Android ที่รองรับ

โปรไฟล์ระบบคลาวด์

เปิดใช้โดยค่าเริ่มต้น

เลือกโดยอัตโนมัติตามข้อมูลผู้ใช้จริง

ใหญ่

ภายใน 2-3 วัน

Android 9 (API ระดับ 28) ขึ้นไป

โปรไฟล์พื้นฐาน

คุณกำหนดค่าเอง

เลือกโดยคุณ

ทุกขนาด

ทันที

Android 7 (API ระดับ 24) ขึ้นไป

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

นอกจากนี้ สิ่งสำคัญสำหรับทีมปฏิทิน Android คือ เลือกเส้นทางของผู้ใช้ที่สำคัญ (CUJ) ที่จะรวมไว้ใน ซึ่งคุณทำได้โดยใช้โปรไฟล์พื้นฐาน

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

รวมเส้นทางของผู้ใช้

ทีมปฏิทินของ Android เลือกรวม CUJ 2 รายการต่อไปนี้ไว้ในโปรไฟล์พื้นฐาน

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

โดยทั่วไป คุณควรเพิ่ม CUJ ที่ทำกำไรให้ธุรกิจ (หาก ที่เกี่ยวข้อง) และ CUJ ที่พบมากที่สุด ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีเลือก CUJ ที่จะเพิ่มประสิทธิภาพ โปรดดูสิ่งที่ควรทำ รวม

การใช้งาน

ทีมปฏิทิน Android จะใช้ Wrapper ภายในสำหรับ ไลบรารี Jetpack Macrobenchmark เพื่อสร้างโปรไฟล์พื้นฐานเพื่อให้ผสานรวมกับเครื่องมือภายในได้ง่าย และ ความสามารถในการปรับขนาดทั่วไป

นี่คือการกำหนดค่าการทดสอบ Macrobenchmark สำหรับการเปิดแอปตามกำหนดเวลา มุมมอง:

@Test
fun generateProfile() =
    baselineProfileRule.collect(PACKAGE_NAME, includeInStartupProfile = true) {
        startActivityAndWait()
        // Verify pre-existing recurring events and tasks are shown.
        device.waitAndFindObject(By.text("Recurring event"), 20_000)
        device.waitAndFindObject(By.text("Recurring task"), 20_000)

        // Open drawer and verify selected view.
        device.findObject(By.desc("Show Calendar List and Settings drawer")).click()
        device.waitAndFindObject(By.desc("Schedule view, Selected"), 1_000)
    }

วัดผลกระทบโดยใช้รุ่นที่มีการควบคุม

เนื่องจากโปรไฟล์พื้นฐานจะทำงานคู่กับ APK ที่เราจัดส่งด้วย และผสานรวมก่อนที่แอปจะทำงาน เป็นไปไม่ได้ที่จะเรียกใช้ A/B มาตรฐาน เพื่อทดสอบทำความเข้าใจผลกระทบ แต่ทีมปฏิทิน Android ดูการวัดผลกระทบที่แม่นยำได้โดยใช้รุ่นที่มีการควบคุม โดยที่ เปิดตัวแอปเวอร์ชันใหม่แก่ผู้ใช้กลุ่มย่อย และเปรียบเทียบ ให้แก่ผู้ใช้ที่ใช้เวอร์ชันที่คล้ายกับรุ่นก่อนหน้า

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

  • ค่ามัธยฐานของเวลาในการตอบสนองในการเริ่มต้นแอปแบบอินเทอร์แอกทีฟ (สถานการณ์พบบ่อยที่สุด) ลดลงจาก 775 ถึง 644 มิลลิวินาที (17%)
  • ค่ามัธยฐานของเวลาในการตอบสนองแบบ Cold Start ลดลงจาก 1,058 มิลลิวินาที เป็น 901 มิลลิวินาที (15%)
  • ค่ามัธยฐานของเวลาในการตอบสนองแบบ Warm Start ลดลงจาก 453 มิลลิวินาที เป็น 378 มิลลิวินาที (17%)
  • ค่ามัธยฐานของอัตราเฟรมที่ไม่ดีลดลง 42-60% ในการดูกำหนดการและการดูเดือน

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

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