home

Bun? for sure?

글 분류
sub
키워드
bun
생성일
2023/10/17 23:39
최근 수정일
2024/09/12 06:11
작성중
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의 속도가 느렸다.

참조