Ducky Coder
Published on

คอมไพล์โปรเจค TypeScript ที่เร็วขึ้น 10 เท่า!

 
คอมไพล์โปรเจค TypeScript ที่เร็วขึ้น 10 เท่า!

เมื่อวาน (11 มีนาคม 2568) ทีมพัฒนา TypeScript ได้ประกาศ คอมไพเลอร์ TypeScript แบบ Native ทำให้การคอมไพล์เร็วขึ้นถึง 10 เท่า เมื่อเห็นตัวเลขนี้ก็อดสงสัยไม่ได้ว่ามันเร็วขึ้นจริงหรือไม่และจะส่งผลอย่างไรกับการใช้งาน

มาลองคอมไพล์ VSCode ซึ่งเป็นโปรเจคขนาดใหญ่กันดู (โปรเจคส่วนตัวที่มีใหญ่ไม่พอที่จะเห็นความต่าง 😓)

ทำไมต้อง TypeScript Native?

ก่อนอื่น มาดูกันว่าทำไมถึงต้องมี TypeScript Native

  • ความเร็วของตัวแก้ไขโค้ด (Editor Speed): ลดเวลารอโหลดโค้ดเบสขนาดใหญ่
  • ความเร็วในการคอมไพล์: ลดเวลาสร้างไฟล์ .js ลงหลายเท่าตัว
  • ประสิทธิภาพของหน่วยความจำ: ลดการใช้ RAM ทำให้สามารถเปิดโปรเจ็กต์ขนาดใหญ่ได้โดยไม่ทำให้เครื่องหน่วง
  • รองรับ AI และการทำงานขั้นสูง: AI tools และ refactoring ที่ต้องการข้อมูลแบบเรียลไทม์จะทำงานได้ลื่นไหลขึ้น

ฟังดูน่าสนใจมาก มาดูผลทดสอบกันเลยดีกว่า

ผลลัพธ์ TypeScript-Go

ผลลัพธ์ที่ได้จาก 63.22 วินาที เหลือเพียง 4.916 วินาที!!! 🚀

CompilerMemory allocsเวลา
tsc3,390,166 KB63.22 วินาที
tscgo3,014,846 KB4.916 วินาที

เร็วขนาดนี้ได้ยังไง

นั่นเป็นเพราะ TypeScript Native นั้นถูกเขียนขึ้นด้วย Go และใช้การทำงานแบบ Concurrency ทำให้เพิ่มความเร็วได้อย่างมาก แต่ด้วยความเป็น Native ต่อให้ปิดการทำงานแบบ Concurrency ก็ยังเห็นความต่างกันอยู่ดี

ผลลัพธ์ TypeScript-Go แบบปิด Concurrency

ผลลัพธ์ที่ได้จาก 63.22 วินาที เหลือ 12.196 วินาที!!! และใช้ Memory น้อยลงอย่างเห็นได้ชัด

CompilerMemory allocsเวลา
tsc3,390,166 KB63.22 วินาที
tscgo3,014,846 KB4.916 วินาที
tscgo (single)2,468,769 KB12.196 วินาที

ทำไมไม่ใช้ Rust

น่าจะเป็นคำถามที่ผุดขึ้นมาทันทีหลังจากได้ยินคำว่า Go ซึ่งทางทีมงานของ TypeScript ก็ได้ออกมาตอบเอง

ผลลัพธ์ TypeScript-Go แบบปิด Concurrency

หลักๆ เลยคือการแปลงโค้ดเนื่องจาก TypeScript คอมไพล์เลอร์นั้นถูกเขียนด้วย TypeScript เอง เมื่อเปรียบเทียบกับ Go แล้วสามารถย้ายโค้ดไปได้ง่ายกว่า เมื่อเทียบกับ Rust ที่เรียกได้ว่าต้องเขียนใหม่เลยทีเดียว จากโค้ดตัวอย่างเกือบ Ctrl+C, Ctrl+V แล้วเปลี่ยนเค่ keyword ทำให้ทางทีมตัดสินใจใช้ Go แทนที่จะเป็น Rust

โค้ดของ TypeScript Go เมื่อเทียบกับ TypeScript

อนาคตของ TypeScript: เวอร์ชัน 6 และ 7

ขณะนี้ TypeScript 5.8 กำลังจะเปิดตัว และ TypeScript 6.x ยังคงพัฒนาอยู่ ในขณะที่ TypeScript 7 จะเป็นแบบ Native เต็มรูปแบบ โดยทีมงานวางแผนการอัปเดตดังนี้:

  • TypeScript 6 (JS): ยังคงได้รับการพัฒนาและสนับสนุน
  • TypeScript 7 (Native): เวอร์ชันใหม่ที่ใช้คอมไพเลอร์เนทีฟ เร็วขึ้นกว่าเดิมอย่างมหาศาล

ควรลองใช้ไหม?

จากการทดสอบ TypeScript Native เร็วขึ้นจริง และลดการใช้หน่วยความจำได้อย่างชัดเจน หากคุณมีโปรเจ็กต์ขนาดใหญ่ หรือรู้สึกว่า TypeScript เริ่มทำงานช้าลง TypeScript Native เป็นตัวเลือกที่น่าสนใจมาก

อย่างไรก็ตาม TypeScript Native ยังไม่สมบูรณ์ 100% และบางฟีเจอร์อาจยังไม่รองรับก็คงต้องรอไปก่อน ⏳

ที่มา DevBlogs Reddit