Skip to main content

บทความที่แล้วเราพูดถึงการ compile โปรแกรมด้วย Just-in-Time (JIT) กันไปแล้ว ในบทความนี้เราจะพูดถึง compiler อีกแบบที่มันจะถูกนำไปใช้ควบคู่กัน เพื่อเพิ่มประสิทธิของโปรแกรมเราให้ดีขึ้น ซึ่งนั้นก็คือๆๆๆ การ compile โปรแกรมแบบ Ahead-of-Time (AOT) นั่นเอง เรามาดูกันสิว่าเจ้า AOT compiler มันคืออะไร มีการทำงานแตกต่างจากเจ้า JIT compiler กันยังไงนะ

Ahead-of-Time (AOT) compiler คืออะไรกันนะ

Ahead-of-Time compiler (AOT) คือการ complied โค้ดของเราที่เป็นรูปแบบ High-level Programming ไปเป็นรูปแบบ Low-level Programming (native machine code) เพื่อให้เกิดการทำงานของโค้ดเราอย่างมีประสิทธิภาพมากขึ้น โดย AOT compiler จะแปลงโค้ดเรา ใน phase ของการ build โปรแกรม ซึ่งจะแตกต่างจาก JIT compiler ที่จะแปลงโค้ดเราใน phase ของการรันโปรแกรม runtime นั่นเองครับ

ผมขอยกตัวอย่าง flow การทำงานของ AOT compiler โดยใช้ Angular platform นะครับ

  1. เราใช้ Typescript, HTML, CSS (SCSS or SASS) ในการพัฒนา Angular application
  2. ตอนจะ build ใช้คำสั่ง ng build –prod ในการ build เพื่อรวบรวมทุกอย่างที่เราใช้ในการทำ application ไม่ว่าจะเป็ยน assets, js files: main, vendor, and polyfills, index.html, และ CSS โดยขั้นตอนนี้ตัว Angular นั้นจะใช้ Angular Compiler ในการ build code ของเรา ซึ่งเจ้าตัว AOT compiler จะถูกเรียกใช้งานใน Step นี้ครับ ตัว Angular Compiler จะมี phase การ build ทั้งหมด 3 phases นะครับ คือ Code Analysis, Code Generation และ Template Type Checking.

หลังจาก build เสร็จแล้วถ้าอย่างเห็นความต่างจาก JIT​ compiler (รันด้วย ng build ไม่มี option flag) ลองเอาขนาดไฟล์มาเทียบกันก็ได้ครับ จะได้เห็นการ optimization ของ AOT compiler ทันที

ลองดูที่ภาพประกอบการทำงานของ AOT compiler ครับ

อีกภาพจะเป็นภาพประกอบการทำงานของ JIT compiler ครับ

สรุปเมื่อไรจะใช้ JIT หรือ AOT Compiler กันหละ

ถ้าจะสรุปแบบง่ายๆ สั้นๆ คือ

  • เราใช้ JIT compiler ใน Development mode เท่านั้น
  • ส่วน AOT compiler เราจะใช้ใน Production mode ครับ

เพื่อนๆที่เข้ามาอ่าน มีความคิดเห็น หรืออะไรอยากแนะนำ ช่วยแนะนำได้เลยนะครับ แลกเปลี่ยนประสบการณ์กันเพื่อความรู้ที่ดียิ่งขึ้นครับผม ขอบคุณล่วงหน้าเลยครับ 🙂

Maris Kheawsaad

Maris Kheawsaad

let's technology make the world a better place

Leave a Reply