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

เมื่อวาน (11 มีนาคม 2568) ทีมพัฒนา TypeScript ได้ประกาศ คอมไพเลอร์ TypeScript แบบ Native ทำให้การคอมไพล์เร็วขึ้นถึง 10 เท่า เมื่อเห็นตัวเลขนี้ก็อดสงสัยไม่ได้ว่ามันเร็วขึ้นจริงหรือไม่และจะส่งผลอย่างไรกับการใช้งาน
มาลองคอมไพล์ VSCode ซึ่งเป็นโปรเจคขนาดใหญ่กันดู (โปรเจคส่วนตัวที่มีใหญ่ไม่พอที่จะเห็นความต่าง 😓)
ทำไมต้อง TypeScript Native?
ก่อนอื่น มาดูกันว่าทำไมถึงต้องมี TypeScript Native
- ความเร็วของตัวแก้ไขโค้ด (Editor Speed): ลดเวลารอโหลดโค้ดเบสขนาดใหญ่
- ความเร็วในการคอมไพล์: ลดเวลาสร้างไฟล์
.js
ลงหลายเท่าตัว - ประสิทธิภาพของหน่วยความจำ: ลดการใช้ RAM ทำให้สามารถเปิดโปรเจ็กต์ขนาดใหญ่ได้โดยไม่ทำให้เครื่องหน่วง
- รองรับ AI และการทำงานขั้นสูง: AI tools และ refactoring ที่ต้องการข้อมูลแบบเรียลไทม์จะทำงานได้ลื่นไหลขึ้น
ฟังดูน่าสนใจมาก มาดูผลทดสอบกันเลยดีกว่า

ผลลัพธ์ที่ได้จาก 63.22 วินาที เหลือเพียง 4.916 วินาที!!! 🚀
Compiler | Memory allocs | เวลา |
---|---|---|
tsc | 3,390,166 KB | 63.22 วินาที |
tscgo | 3,014,846 KB | 4.916 วินาที |
เร็วขนาดนี้ได้ยังไง
นั่นเป็นเพราะ TypeScript Native นั้นถูกเขียนขึ้นด้วย Go และใช้การทำงานแบบ Concurrency ทำให้เพิ่มความเร็วได้อย่างมาก แต่ด้วยความเป็น Native ต่อให้ปิดการทำงานแบบ Concurrency ก็ยังเห็นความต่างกันอยู่ดี

ผลลัพธ์ที่ได้จาก 63.22 วินาที เหลือ 12.196 วินาที!!! และใช้ Memory น้อยลงอย่างเห็นได้ชัด
Compiler | Memory allocs | เวลา |
---|---|---|
tsc | 3,390,166 KB | 63.22 วินาที |
tscgo | 3,014,846 KB | 4.916 วินาที |
tscgo (single) | 2,468,769 KB | 12.196 วินาที |
ทำไมไม่ใช้ Rust
น่าจะเป็นคำถามที่ผุดขึ้นมาทันทีหลังจากได้ยินคำว่า Go ซึ่งทางทีมงานของ TypeScript ก็ได้ออกมาตอบเอง

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

อนาคตของ 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% และบางฟีเจอร์อาจยังไม่รองรับก็คงต้องรอไปก่อน ⏳