Bun의 첫 번째 모습: 정말 Node.js와 Deno보다 3배 더 빠릅니까?

좋든 싫든 JavaScript 도구 환경은 다시 한 번 많은 대화의 주제입니다.

최신: Bun . 성능과 올인원(런타임, 번들러, 패키지 관리자, 트랜스파일러)에 중점을 둔 새로운 JS 런타임입니다. 따라서 Node.js, NPM, tsc, 롤업과 비슷하지만 더 빠릅니다.

서버 측 렌더링 React에서 3배 더 빠르다는 큰 주장을 합니다. 그래서 우리는 그것을 테스트했습니다.

Bun을 빠르게 만드는 것은 무엇입니까?





Bun 팀은 그들의 성과를 다음과 같은 몇 가지 요인에 기인합니다.
  • 프로파일링, 벤치마킹 및 최적화에 엄청난 시간 소요
  • Zig language을 사용하여 저수준 메모리 제어 및 숨겨진 제어 흐름 부족
  • Chromium 내부의 엔진인 JavaScript Core 대신 Safari 내부의 엔진인 V8 사용

  • 그래서, 더 빠릅니까?



    우리는 Bun.sh에서 이 특정 주장을 파헤치기로 했습니다.



    얼핏보면 우와! 하지만 내 Next.js 사이트가 갑자기 3배 더 빨라지는 것을 상상했는데...솔직히 이해하기 어려웠습니다.

    하지만 누가 알기에 파고들었습니다. 가장 먼저 눈에 띄는 것은 벤치마크의 source code이었습니다. 간단히 말해서... 이것은 서버 렌더링에 대한 React 앱의 가장 "실제"예제가 아닙니다.



    나는 당신에 대해 모르지만 실제 앱을 위해 서버 렌더링 React를 할 때마다 더 많은 일이 진행됩니다. 비즈니스 로직, 라이브러리, 소품, 상태, 컨텍스트 등이 포함된 훨씬 더 큰 구성 요소 트리

    그래서 좀 더 본격적인 React 앱을 만들고 몇 가지 벤치마크를 실행하기로 결정했습니다.

    방법론



    Mitosis ( source )에 대시보드 앱을 만들었습니다. 구성 요소, 비즈니스 로직, 종속성의 전체 트리가 있으며 소품 및 상태 및 기타 일반적인 React 기능을 사용합니다.

    Mitosis는 React vs Preact, CSS vs styled-component 등과 같은 변형뿐만 아니라 보다 "실제"지향적인 앱에서 성능을 비교하기 위해 많은 프레임워크용 코드를 생성할 수 있도록 선택되었습니다.

    Node.js, Deno 및 Bun으로 기본 앱을 만들었습니다. Bun의 결과를 더 가깝게 복제하기 위해 react-dom/servercustom fork을 사용했습니다.

    나는 처음에 이것을 피하고 싶었지만 Jarred(Bun의 창시자)는 react-dom/server의 플랫폼별 구현에 대한 좋은 사례를 만들었으며 이미 (특히 브라우저 대 노드와 같은) 일이며 앞으로도 그럴 것입니다. 그들은 이것을 궁극적으로 React 코어에 병합할 계획이므로 우리는 이것이 곧 이루어질 것이라고 조심스럽게 낙관적으로 가정할 것입니다.

    그런 다음 autocannon을 사용하여 React 앱을 렌더링하는 각 런타임 서버의 처리량(초당 요청)을 측정했습니다.

    결과는 어땠습니까?



    Bun 버전2.6 GHz 6-Core Intel Core i7 , Deno 버전0.1.10 , Node.js 버전1.25.0을 사용하여 내16.14.0에서 실행한 결과는 다음과 같습니다.

    ┌─────────┬──────────────────┬─────┬─────┬─────┬───────┬─────────┐
    │ (index) │       name       │ 1%  │ 50% │ 99% │  Avg  │ Std Dev │
    ├─────────┼──────────────────┼─────┼─────┼─────┼───────┼─────────┤
    │    0    │ 'react-ssr-bun'  │ 500 │ 669 │ 718 │ 650.8 │  71.7   │
    │    1    │ 'react-ssr-deno' │ 550 │ 600 │ 630 │  601  │  20.89  │
    │    2    │ 'react-ssr-node' │ 267 │ 375 │ 394 │ 366.5 │  35.04  │
    └─────────┴──────────────────┴─────┴─────┴─────┴───────┴─────────┘
    


    벤치마크에 대한 full source을 확인하십시오(방법론을 개선할 수 있는 방법이 있으면 알려주십시오).

    여기서 Bun은 Node.js보다 초당 약 75% 더 많은 요청을 처리하고 Deno는 그 사이에 있습니다(Node보다 Bun에 더 가깝습니다).

    나는 놀랐다. 예, 3배 빠르지는 않지만 실제로는 상당한 마진으로 더 빠릅니다.

    그럼 이제 Bun으로 바꿔야 할까요?



    글쎄요. 현재 베타 버전이며 프로덕션 준비가 되지 않았습니다(많은 사용자가 눈에 띄는 버그가 있다고 보고함). 그러나 계속 지켜볼 가치가 있습니다.

    특히 Bun CLI를 사용하면 매우 빠르게 느껴집니다.



    특히 설치가 너무 빨라서 실제로 설치되었는지 확인하기 위해 두 번 확인해야 합니다.

    나에게 이것은 중대형 프로젝트에 대한 내 경험에서 Yarn조차도 얼마나 느릴 수 있는지 고려할 때 Bun의 더 흥미로운 영역 중 하나입니다.

    그러나 이것은 한 사람의 결과와 의견일 뿐입니다. 모두 어떻게 생각하세요?

    좋은 웹페이지 즐겨찾기