Nodej.s는 런타임, Bun은 런타임, 패키지 매니저, 번들러, 테스트러너이다. JS 환경의 맥가이버칼.
•
최신 자바스크립트 런타임인 bun은 항상 속도로 주목받아왔었다. 빠르게는 NodeJS에 비해 두배 이상의 속도를 자랑하기도 했었다.
TLDR
•
Bun은 그냥 런타임이 아니다. 패키지 매니저, 번들러, 테스트러너 + TS native support 등등 JS 개발환경의 맥가이버다.
•
Bun과 Node.js는 자바스크립트의 엔진이 다르다.
•
간단한 태스크의 처리속도는 더빠르나 복잡한 태스크 처리 속도에선 오히려 Node.js가 더 빠르다.
차이 비교
Node.js | Bun | |
작성 언어 | C++ | zig, rust |
자바스크립트 엔진 | V8 | JSC(JavaScriptCore) |
트랜스파일러 | TS 네이티브 지원 X | built-in trasnpiler |
esm, CommonJS | 기본적으로 한 파일에서 사용 불가 → 추가설정 필요 | 기본으로 한파일에서 esm, CommonJS 사용 가능 |
Web API | 일관적이지 않은 지원 → 아직도 Node.js에는 fetch가 존재하지 않는다. | Web standard API의 built-in 지원이 가능하며 써드파티 alternatives 보다 더 빠르고 reliable |
Hot reloading | nodemon이나 node —watch와 같은 옵션으로 수행했어야함. | —hot 옵션으로 실행가능, 이전 프로세스를 제거하지 않고 hot reload 되므로 HTTP, WebSocket 커넥션이 그대로 남아있다. → 개선된 DX로 이어진다. |
다운로드 속도 | 느리다 | 아주 빠르다 |
번들러 | 써드파티 라이브러리들로 수행되고 있음 | 일단 속도는 제일 빠름, |
JSC
•
Apple이 safari를 위해 개발한 자바스크립트 엔진, v8과는 다른 다른 구조와 최적화 전력을 가지고 있다.
•
빠른 시작시간과 메모리 사용량을 우선순위로 가지고 있지만 비교적 살짝 느린 실행시간이 특징.
•
bun은 실제 실행시간을 따져봤을떄도 Node.js보다 4배정도 빠른 실행시간을 가지고 있다.
다운로드 속도
컴퓨팅 속도 차이
•
“Hello World” 시나리오와 같은 짧은 시나리오에서는 빠른 속도를 자랑하나 비교적 복잡한 task에서는 오히려 속도를 못냈다.
•
복잡한 작업에서는 오히려 bun의 속도가 느렸다.