Grab ซึ่งเป็นซูเปอร์แอปชั้นนำในเอเชียตะวันออกเฉียงใต้ ให้บริการหลากหลายแก่ผู้ใช้หลายล้านคนในแปดประเทศ ก่อนการปรับปรุงกระบวนการ Build พวกเขาประสบปัญหา Cold start delay และ ANR spikes หลังการอัปเดตใหม่ ซึ่งส่วนใหญ่เกิดจากค่าใช้จ่ายในการอ่านไฟล์ DEX จำนวนมากระหว่างการเริ่มต้นแอป
แม้ว่า Google Play’s Cloud Profiles จะช่วยปรับปรุงโฟลว์มาตรฐานสำหรับผู้ใช้ส่วนใหญ่ แต่ก็ไม่ได้ครอบคลุมเส้นทางการเริ่มต้นทั้งหมดที่จำเป็นสำหรับเส้นทางของผู้ใช้ที่สำคัญของ Grab เช่น การเริ่มต้น Dagger dependency graphs ขณะเปิดแอป
การนำ custom Baseline Profile มาใช้ได้ช่วยแก้ไขปัญหานี้ โดยการนำเส้นทางของผู้ใช้ที่สำคัญเหล่านี้เข้าสู่ Cloud Profiles ของ Google Play โดยตรง ทำให้เส้นทางสำคัญเหล่านี้ถูกคอมไพล์เป็น machine code ทันทีที่ติดตั้ง
Nguyen Van Minh, Lead Software Engineer บน Grab’s Passenger App Core team กล่าวว่า พวกเขาพบว่าอัตรา ANR spikes เกิดขึ้นอย่างต่อเนื่องกับการปล่อยแอปรายสัปดาห์
ด้วยการใช้ R8 optimizations, Baseline Profiles และ Startup Profiles ร่วมกับ Profile guided optimization ทำให้สามารถเห็นการปรับปรุง Cold start ได้ทันที 12% จาก R8 และอีก 15% จาก Baseline Profiles ส่งผลให้เวลาเริ่มต้นแอปเร็วขึ้น 27% และกำจัด ANR spikes หลังการปล่อยได้อย่างมีประสิทธิภาพ
ศัพท์ที่ควรรู้
- Superapp – คือแอปพลิเคชันเดียวที่รวมบริการหลายอย่าง เช่น การจัดส่ง การเดินทาง และการเงินไว้ด้วยกัน
- ANR (App Not Responding) – คือสถานการณ์ที่แอปพลิเคชันไม่ตอบสนองต่อผู้ใช้ ทำให้ดูเหมือนว่าแอปค้าง
- DEX files – คือไฟล์ที่เก็บโค้ดของแอปพลิเคชัน ซึ่งต้องใช้เวลาในการอ่านเมื่อแอปเริ่มต้น
- R8 optimizations – คือกระบวนการปรับปรุงโค้ดของแอปพลิเคชันให้มีขนาดเล็กลงและทำงานได้เร็วขึ้น
- Baseline Profile – คือชุดข้อมูลที่ช่วยให้ระบบรู้ว่าเส้นทางสำคัญของแอปคืออะไร และควรคอมไพล์ให้พร้อมใช้งานทันที
ที่มา: developer.android.com