ฟีเจอร์ใหม่ของ Android 7.0 ที่ลึกลงไปในระดับของการคอมไพล์คือการนำเทคนิค Just in Time (JIT) compiler มาใช้กับรันไทม์แบบ ART ที่เริ่มใช้มาตั้งแต่ Android 5.0
ART ใช้แนวทางการคอมไพล์แบบ Ahead of Time (AOT) หรือคอมไพล์รอไว้ก่อนรันแอพ ข้อดีของ AOT คือไม่ต้องคอมไพล์ใหม่ทุกครั้งเมื่อรันแอพ (ส่วนใหญ่จะคอมไพล์ตอนติดตั้งแอพจาก Play Store) การรันแอพใช้แรมน้อยลง ใช้ทรัพยากรน้อยลง ประหยัดแบตเตอรี่มากขึ้น แต่ข้อเสียคือเปลืองพื้นที่เก็บไฟล์แอพที่คอมไพล์แล้ว กระบวนการติดตั้งแอพช้าลง และแอพที่คอมไพล์แล้วจะผูกกับคอนฟิกของระบบขณะคอมไพล์ ถ้าหากเราอัพเดตระบบปฏิบัติการใหม่ คอนฟิกเปลี่ยน แอพจะต้องถูกคอมไพล์ใหม่ตอนรีบูตเครื่องครั้งแรก (ซึ่งเป็นที่มาของหน้าจอ App Optimization)
ปัญหาเรื่องการรอ App Optimization อาจไม่ใช่เรื่องใหญ่ในอดีต เพราะกูเกิลอัพเดตระบบปฏิบัติการปีละครั้ง แต่ตอนนี้กูเกิลเปลี่ยนมาเป็นอัพเดตแพตช์ความปลอดภัยให้ทุกเดือน การต้องรีบูตเครื่องใหม่และรอคอมไพล์ใหม่ทุกครั้งคงไม่สะดวกนัก
ใน Android 7.0 กูเกิลจึงนำเทคนิคการคอมไพล์แบบ Just in Time (JIT) หรือคอมไพล์ตอนรันแอพมาผสมด้วย เพื่อดึงจุดเด่นของทั้ง JIT และ AOT มาใช้ร่วมกัน (ถือเป็นไฮบริดระหว่าง JIT/AOT)
Android 7.0 จะเลือกวิธีคอมไพล์แอพตามสถานการณ์เพื่อให้ได้ประโยชน์สูงสุด เช่น เมื่ออัพเดตและบูตเครื่องแล้ว ไม่ต้องคอมไพล์แบบ AOT ให้เสียเวลารอ optimize แต่จะไปคอมไพล์แบบ JIT แทนตอนรันแอพครั้งแรก และถ้ามือถือเราวางอยู่นิ่งๆ ไม่ใช่งาน แถมยังเสียบปลั๊กชาร์จไฟ ระบบจะใช้เวลาช่วงนี้มาคอมไพล์แบบ AOT ให้แทน
Android 7.0 ยังสามารถแยกส่วนการคอมไพล์ได้ด้วย (profile-guided compilation) เช่น บางส่วนอาจคอมไพล์แบบ AOT รอไว้ก่อน และบางส่วนค่อยรอคอมไพล์แบบ JIT ตอนรัน ซึ่งตัวระบบปฏิบัติการจะประเมินและปรับแต่งให้เองตามความเหมาะสมของแอพแต่ละตัว
ข้อดีของการนำ JIT มาใช้งานคือระยะเวลาติดตั้งแอพเร็วขึ้น และไม่ต้องรอ optimization ตอนรีบูตหลังอัพเดตอีกต่อไป
การบรรยายเรื่อง ART ในงาน Google I/O 2016
ความแตกต่างของ JIT กับ AOT (ภาพประกอบจาก IBM)
ที่มา - Android Developers, Ars Technica
Comments
แอปก็ ANT ตัว OS ก็แยกพาร์ทิชันทำอัปเดตแบบรีบูตไม่เสียเวลาได้อีก เจ๋งไปหมดเลยนะครับนี่
นี่สิครับ นวัตกรรม ของจริง
หวังว่าคงจะมีบังคับให้ AOT นะ
บล็อกส่วนตัวที่อัพเดตตามอารมณ์และความขยัน :P
storage ที่ถูกลงเรื่อยๆทำให้ความสิ้นเปลืองพื้นที่ของAOTน่าจะไม่ทำให้เป็นภาระผู้ใช้งานนะครับ มีแบบใหม่ก็ดี แต่ถ้าแบบเก่าผมก็ไม่มีปัญหา
เหมือนจะเน้นไปที่เรื่องเวลาการรีบูตเครื่องหลังอัพเดทเป็นหลักครับ เพราะสุดท้ายแล้วก็จะคอมไพล์แอพทั้งหมด(AOT)ตอนชาร์ตแบตอยู่ดีครับ
edit *เนื้อหาซ้ำข้างบนอ่านผ่านเลยครับ
return of the jit
ผมหนีกลับมาใช้ Lumia 950 ละ ใช้ LG G3 + Android 6.0 แล้วไม่ปลื้มอย่างแรง ไอ้เราก็นึกว่าจะดีขึ้นกว่าตอนใช้ S2 + 4.0 แต่ไม่เลย UX ห่วยยังไงก็ยังห่วยยังงั้น แถม UI ก็ยังกระตุกเหมือนเดิม มีดีแค่ฟีเจอร์เยอะขึ้น
นี่ถ้า iPhone มี Qi นะ ผมไปใช้ละ
มุมมองบางอย่างผมถูกใจฝั่งกูเกิลเยอะมากครับ คิดมานานมากแล้วว่าวิสัยทัศน์เค้าดีมากและคงหนีไม่พ้นเข้าสักวัน
W10M ก็มีดีเยอะนะครับ แค่แอปมันน้อยมายาวนานจนแม้แต่ไมโครซอฟท์เองก็อืดกับมันไปด้วย ฮาาาา
อย่างน้อยตอนนี้ก็ได้อัปเดตส่วนมากพร้อมๆ กับ PC ตามที่เคยบอกว่าอยากให้เป็นแบบนี้
ยืนยันว่า UX ห่วยอีกเสียง เพราะใช้ iphone5s คู่กับ s7 edge
ประสบการณ์ใช้งาน iphone เหนือกว่าเห็นๆ