โปรไฟล์พื้นฐานช่วยปรับปรุงความเร็วในการเรียกใช้โค้ดได้สูงสุด 30% โดยหลีกเลี่ยงขั้นตอนการคอมไพล์ ของอินเทอร์พรีเตอร์และแบบ Just-In-Time (JIT) สำหรับการเดินทางของผู้ใช้ทั่วไป โปรไฟล์พื้นฐานช่วยให้คุณเลือกเส้นทางของผู้ใช้ที่ต้องการเพิ่มประสิทธิภาพได้ และช่วยปรับปรุงการเริ่มต้นแอป ลดอาการกระตุก และอื่นๆ ซึ่งจะส่งผลให้เมตริกทางธุรกิจดีขึ้น เช่น การคงผู้ใช้ไว้และคะแนน ดูข้อมูลเพิ่มเติมเกี่ยวกับ Baseline Profiles
ทีมปฏิทิน Android ได้ใช้ Baseline Profiles และสังเกตเห็นว่าเวลาเริ่มต้นของแอปดีขึ้นประมาณ 20% และเฟรมที่ช้าหรือหยุดนิ่งลดลงประมาณ 50% ต่อไปนี้คือสิ่งที่แอปเหล่านี้ทำตั้งแต่ต้นจนจบเพื่อให้ได้ประสิทธิภาพที่เพิ่มขึ้น ตั้งแต่เหตุผลที่ตัดสินใจใช้โปรไฟล์พื้นฐานไปจนถึงวิธีวัดผลลัพธ์
โปรไฟล์ Cloud เทียบกับโปรไฟล์พื้นฐาน
ทีมปฏิทิน Android ใช้ Cloud Profiles อยู่แล้ว ซึ่งเป็นอีกวิธีหนึ่งของ Profile Guided Optimization (PGO) ที่อิงตามการโต้ตอบของผู้ใช้ในโลกแห่งความเป็นจริงกับแอป ข้อมูลเปรียบเทียบระหว่าง Cloud Profiles กับ Baseline Profiles มีดังนี้
| ประเภทโปรไฟล์ | ตั้งค่า | รวมเส้นทางของผู้ใช้ | ทำงานได้ดีที่สุดเมื่อฐานผู้ใช้เป็น | ผลกระทบที่เกิดขึ้น | เวอร์ชัน Android ที่รองรับ |
|---|---|---|---|---|---|
โปรไฟล์ Cloud |
เปิดใช้โดยค่าเริ่มต้น |
เลือกโดยอัตโนมัติตามข้อมูลผู้ใช้ในโลกแห่งความเป็นจริง |
ใหญ่ |
ภายใน 2-3 วัน |
Android 9 (API ระดับ 28) ขึ้นไป |
โปรไฟล์พื้นฐาน |
กำหนดค่าโดยคุณ |
คุณเป็นผู้เลือก |
ทุกขนาด |
ทันที |
Android 7 (API ระดับ 24) ขึ้นไป |
เหตุผลสำคัญที่ทีมปฏิทิน Android ตัดสินใจเพิ่ม Baseline Profile ลงในโค้ดเบสก็คือการเปลี่ยนไปใช้รอบการเผยแพร่รายสัปดาห์ที่เร็วขึ้น แม้ว่าโปรไฟล์ในระบบคลาวด์จะช่วยเพิ่มประสิทธิภาพได้อย่างมาก แต่ต้องใช้เวลา 1-2 วัน หลังจากเปิดตัวแอปจึงจะส่งผลสูงสุดได้ เนื่องจากต้องอาศัย การรวบรวมข้อมูลผู้ใช้ในโลกแห่งความจริง การเสริมโปรไฟล์ Cloud ด้วยโปรไฟล์พื้นฐาน จะช่วยให้ผู้ใช้มีเวลามากขึ้นในการสัมผัสการปรับปรุงประสิทธิภาพสูงสุด ก่อนที่จะเปิดตัวแอปเวอร์ชันถัดไป
นอกจากนี้ ทีมปฏิทิน Android ยังต้องสามารถ เลือกเส้นทางของผู้ใช้ที่สําคัญ (CUJ) ที่รวมอยู่ใน โปรไฟล์ได้ ซึ่งคุณสามารถทําได้โดยใช้โปรไฟล์พื้นฐาน
โดยทั่วไป เราขอแนะนำให้ใช้โปรไฟล์พื้นฐานนอกเหนือจากโปรไฟล์ระบบคลาวด์ ซึ่งเปิดใช้โดยค่าเริ่มต้น เพื่อให้ได้ผลลัพธ์ด้านประสิทธิภาพที่ดีที่สุด
รวมเส้นทางของผู้ใช้
ทีมปฏิทิน Android เลือกที่จะรวม CUJ 2 รายการไว้ใน Baseline Profile ดังนี้
- การเปิดแอปในมุมมองตารางเวลา: มุมมองเริ่มต้นในตอนแรก ดังนั้นจึงควร เพิ่มประสิทธิภาพสำหรับผู้ใช้ที่ใช้แอปเป็นครั้งแรกหรือผู้ที่ไม่ได้เปลี่ยน การตั้งค่าเริ่มต้น
- การเปิดแอปในมุมมองเดือน: มุมมองที่ผู้ใช้หลายคนเลือกใช้ตามข้อมูลผู้ใช้ หากต้องการติดตามวิธีที่ผู้ใช้ใช้แอป คุณสามารถใช้เครื่องมือต่างๆ เช่น Firebase
โดยทั่วไป คุณควรเพิ่ม CUJ ที่ทำกำไรให้กับธุรกิจ (หากมี) และ CUJ ที่พบบ่อยที่สุด ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีเลือก CUJ เพื่อเพิ่มประสิทธิภาพได้ที่สิ่งที่ควร รวม
การใช้งาน
ทีมปฏิทิน Android ใช้ Wrapper ภายในสำหรับ ไลบรารี Jetpack Macrobenchmark เพื่อสร้างโปรไฟล์พื้นฐานเพื่อให้ผสานรวมกับเครื่องมือภายในและ ความสามารถในการปรับขนาดทั่วไปได้ง่าย
การกำหนดค่าการทดสอบ Macrobenchmark สำหรับการเปิดแอปในมุมมองตารางเวลา มีดังนี้
@Test
fun generateProfile() =
baselineProfileRule.collect(PACKAGE_NAME, includeInStartupProfile = true) {
uiAutomator {
startApp(packageName = PACKAGE_NAME)
// Verify pre-existing recurring events and tasks are shown.
// onElement waits for the element by default
onElement { textAsString() == "Recurring event" }
onElement { textAsString() == "Recurring task" }
// Open drawer and verify selected view.
onElement { contentDescriptionAsString() == "Show Calendar List and Settings drawer" }.click()
onElement { contentDescriptionAsString() == "Schedule view, Selected" }
}
}
แทนที่ค่าต่อไปนี้
- PACKAGE_NAME: ชื่อแพ็กเกจของแอปที่คุณต้องการ สร้างโปรไฟล์พื้นฐาน
วัดผลลัพธ์โดยใช้การเปิดตัวที่ควบคุม
เนื่องจากโปรไฟล์พื้นฐานเชื่อมโยงอย่างใกล้ชิดกับ APK ที่จัดส่งมาด้วย และรวมไว้ก่อนที่แอปจะทํางาน จึงไม่สามารถทําการทดสอบ A/B มาตรฐาน เพื่อทําความเข้าใจผลกระทบของโปรไฟล์พื้นฐาน อย่างไรก็ตาม ทีมปฏิทิน Android สามารถวัดผลกระทบได้อย่างแม่นยำโดยใช้การเผยแพร่ที่ควบคุมได้ ซึ่งคุณจะเผยแพร่แอปเวอร์ชันใหม่ไปยังผู้ใช้เพียงบางกลุ่มและเปรียบเทียบกับผู้ใช้ที่ใช้เวอร์ชันคล้ายกับรุ่นก่อนหน้า
เมื่อใช้ Baseline Profiles พวกเขาพบว่าประสิทธิภาพในหลายๆ ด้านดีขึ้นอย่างเห็นได้ชัดในทันที ดังนี้ สถิติเหล่านี้รวบรวมจากอุปกรณ์หลากหลายประเภทและผู้ใช้ทั้งหมด โดยผู้ที่เริ่มต้นในมุมมองตารางเวลาและมุมมองเดือนน่าจะได้รับประโยชน์มากที่สุด แต่ผู้ใช้รายอื่นๆ ก็ได้รับประโยชน์เช่นกันเนื่องจากการเพิ่มประสิทธิภาพกระบวนการที่ใช้ร่วมกัน เช่น การโหลดข้อมูลปฏิทินจากฐานข้อมูล
- เวลาในการตอบสนองของแอปแบบอินเทอร์แอกทีฟที่ค่ามัธยฐาน (สถานการณ์ที่พบบ่อยที่สุด) ลดลงจาก 775 มิลลิวินาทีเป็น 644 มิลลิวินาที (17%)
- เวลาในการตอบกลับของ Cold Start ค่ามัธยฐานลดลงจาก 1,058 มิลลิวินาทีเป็น 901 มิลลิวินาที (15%)
- เวลาในการตอบกลับ Warm Start มัธยฐานลดลงจาก 453 มิลลิวินาทีเป็น 378 มิลลิวินาที (17%)
- อัตราเฟรมที่ไม่เสถียรเฉลี่ยลดลง 42-60% ในมุมมองกำหนดการและมุมมองเดือน
โปรดทราบว่าหากใช้โปรไฟล์ระบบคลาวด์ร่วมกับโปรไฟล์พื้นฐาน คุณอาจเห็นการปรับปรุงลดลงเล็กน้อยในช่วงสัปดาห์แรก เนื่องจากระบบจะสร้างโปรไฟล์ระบบคลาวด์ อย่างไรก็ตาม คุณยังคงควร สังเกตเห็นประสิทธิภาพที่เพิ่มขึ้นอย่างมากด้วยโปรไฟล์พื้นฐานนอกเหนือจากการเพิ่มประสิทธิภาพอื่นๆ ที่คุณมีอยู่
ดูข้อมูลเพิ่มเติมเกี่ยวกับเครื่องมือและฟีเจอร์ได้ที่แหล่งข้อมูลต่อไปนี้