마이크로소프트가 최근 TypeScript 컴파일러(tsc)를 Go 언어로 재구현하여 성능을 기존보다 최대 10배 향상시켰다고 발표했다. 이 프로젝트는 “Project Corsa”라는 이름으로 진행됐으며, 기존 JavaScript 기반 컴파일러의 성능 한계를 해결하는 데 중점을 두었다.
- 기존 TypeScript 컴파일러는 TypeScript로 작성돼 있어 Node.js 런타임 환경에서 실행된다.
- 프로젝트가 커질수록 컴파일 시간이 길어지고 에디터의 반응 속도도 크게 떨어졌다.
- 이에 따라 마이크로소프트는 컴파일 속도를 획기적으로 높이기 위해 Go 언어로 컴파일러를 완전히 재작성했다.
Go 언어를 선택한 이유
마이크로소프트가 다양한 후보 중 Go를 선택한 이유는 다음과 같다.
- 구조적 유사성: Go는 기존 TypeScript 코드와 코드 구조가 유사하여 빠르게 전환이 가능하다.
- 효율적인 메모리 관리: Go의 자동 메모리 관리 덕분에 메모리 사용량이 기존 대비 절반 수준으로 감소했다.
- 뛰어난 병렬 처리(Concurrency): Go의 강력한 병렬 처리 기능으로 컴파일 작업을 분산 처리해 성능을 대폭 개선했다.
성능 개선 사례
마이크로소프트가 직접 공개한 주요 프로젝트에서의 성능 개선 결과는 다음과 같다.
프로젝트명 | 코드 크기 | 기존 컴파일 속도 | Go 컴파일러 속도 | 성능 향상 |
---|---|---|---|---|
VS Code | 150만 줄 | 77.8초 | 7.5초 | 10.4배 |
Playwright | 35만 줄 | 11.1초 | 1.1초 | 10.1배 |
TypeORM | 27만 줄 | 17.5초 | 1.3초 | 13.5배 |
date-fns | 10만 줄 | 6.5초 | 0.7초 | 9.5배 |
또한, VS Code 프로젝트를 에디터에서 로딩할 때 걸리는 시간이 9.6초에서 1.2초로 대폭 단축됐다.
이 덕분에,
- 개발자들은 기존 코드를 전혀 수정하지 않고도 즉시 성능 향상 효과를 누릴 수 있다.
- 새 컴파일러는 Node.js 없이 독립적으로 실행 가능한 바이너리로 제공돼 환경 세팅이 더욱 간편해진다.
- 단, 내부 API를 직접 사용하는 일부 툴이나 라이브러리는 소폭의 수정이 필요할 수 있다.
이번 성능 향상은 단순히 속도 개선 이상의 가치를 지닌다. 빠른 컴파일러는 에디터의 반응성을 극대화하고, 개발 생산성을 획기적으로 높여줄 것으로 기대된다. 향후 TypeScript를 사용하는 시스템 전체에 긍정적인 영향을 미칠 것으로 예상된다.
TI Tech Lab 김준수 연구원
Source
- https://devblogs.microsoft.com/typescript/typescript-native-port/
- https://appwrite.io/blog/post/typescript-7-faster-with-go
Add comment