# Bun은 Node보다 빠를까? Misskey로 검증

> Clean Markdown view of GeekNews topic #16371. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=16371](https://news.hada.io/topic?id=16371)
- GeekNews Markdown: [https://news.hada.io/topic/16371.md](https://news.hada.io/topic/16371.md)
- Type: news
- Author: [sftblw](https://news.hada.io/@sftblw)
- Published: 2024-08-19T12:55:04+09:00
- Updated: 2024-08-19T12:55:04+09:00
- Original source: [gihyo.jp](https://gihyo.jp/article/2024/08/misskey-15)
- Points: 12
- Comments: 9

## Summary

Misskey의 메인테이너가 NodeJS와 Bun의 성능을 비교한 결과, Bun은 메모리 사용량이 더 많고 실행 속도도 느린 것으로 나타났습니다. 다양한 처리에서 NodeJS가 더 빠른 결과를 기록했으며, 특히 게시물 작성 시 NodeJS가 2배 더 빠른 속도를 보였습니다. 그러나 Bun의 발전 가능성에 대한 기대와 추가 최적화에 따른 성능 향상 가능성도 언급합니다.

## Topic Body

[Misskey](https://misskey-hub.net/ko/) ([GeekNews](https://news.hada.io/topic?id=7871))는 [ActivityPub 연합을 지원](https://news.hada.io/topic?id=1528)하는 마이크로블로깅 서버 프로그램입니다. Misskey는 일본에서 주로 개발되고 있으며, 이모지 리액션, 자체 마크업인 MFM, 키워드 추적 (안테나), 프로필 장식하기, 자체 스크립트인 AiScript 를 사용한 인터렉티브 페이지 만들기, 미니게임 등등 재미있는 기능이 많이 있어서 재미를 찾는 유저들이 많이 찾는 플랫폼입니다.  
  
Misskey의 기술 스택은 제가 알기로는 다음과 같습니다. (틀릴 수 있습니다.)  
  
- NodeJS, TypeScript  
- Koa.js, PostgreSQL, Redis  
- Vue  
  
이 글에서는 Misskey의 메인테이너인 syuilo (슈이로) 님이 NodeJS와 비교하였을 때의 Bun의 성능을 Misskey의 소스를 가지고 검증합니다.  
  
- 기존 소스를 그대로 Bun으로 돌렸을 때 빨라지는가? 를 테스트하는 것을 목적으로 합니다. 글에서는 Bun을 위한 최적화를 별도로 수행하지 않았으며, 호환되지 않는 코드가 복잡한 경우 테스트를 수행하지 않았다고 밝히고 있습니다.  
- 글에는 어디까지나 하나의 사례로만 봐달라는 당부사항이 있습니다.  
- Ubuntu에서의 테스트였지만 Windows에서도 별 차이가 없었다고 합니다.  
  
결론부터 말하자면, 이 사례의 경우 Bun에서 오히려 성능이 저하되는 현상이 주를 이루었습니다. 기존 대규모 소스를 Bun으로 실행한다고 해서 마법처럼 빨라진다고는 말할 수 없다...가 결론인 것 같네요. ChatGPT가 요약한 내용은 이렇습니다.  
  
- 메모리 사용량: Node 약 200MB, Bun 약 800MB로 Bun이 훨씬 많은 메모리를 소모.  
- 실행 속도: 타임라인 조회와 같은 다양한 처리에서 Node가 더 빠른 결과를 기록. 특히, 게시물 작성 시 Node는 5초, Bun은 10초로 Node가 2배 빠름.  
- AiScript: 순수 JavaScript 코드 실행에서는 Node(V8 엔진)이 약 1.5배 더 빠름.  
  
글에는 코드베이스 각 부분의 실행 벤치마크가 올라와있으나 WebSocket의 1회성 실행을 제외하고는 모두 NodeJS가 근소하거나 많은 차이로 빠른 결과를 보였습니다. WebSocket 실행의 경우에도 10만회 실행 시 NodeJS가 근소하게 더 빠른 결과를 보였습니다.  
  
다만 글 작성자인 syuilo 님은 Bun의 발전 가능성을 여전히 기대하고 있으며, 추가 최적화에 따라 성능이 향상될 가능성도 언급하고 있습니다.

## Comments



### Comment 28125

- Author: nxhtk
- Created: 2024-08-19T21:55:22+09:00
- Points: 2

단순 바꿔서 돌리는 경우 node:crypto나 zlib 관련 라이브러리처럼 bun 문서나 이슈에도 명시된 아직 최적화가 덜 된 케이스도 있습니다.   
  
예시 중 5초에서 10초가 될 정도로 느려진거라면 아마 이런 부분이 아닐까 싶네요. 실제로 저도 jwt 관련 라이브러리에서 이런 문제 때문에 몇배 느려진 적이 있어 라이브러리를 바꿔 최적화 시켜야했죠.

### Comment 28120

- Author: savvykang
- Created: 2024-08-19T19:49:54+09:00
- Points: 1

일본어 기술 블로그 글은 어디서 가져오시는 지 궁금합니다. 체계적이고 핵심이 있는 느낌을 받아서요

### Comment 28142

- Author: tribela
- Created: 2024-08-20T09:59:08+09:00
- Points: 1
- Parent comment: 28120
- Depth: 1

다른 글은 모르겠지만 이 글은 미스키에 올라왔기 때문에 연합우주에서 받아볼 수 있었습니다 (저도 거기서 먼저 보고 여기에 올라온 걸 봤습니다)

### Comment 28129

- Author: bus710
- Created: 2024-08-20T02:09:53+09:00
- Points: 3
- Parent comment: 28120
- Depth: 1

이 본문의 출처는 잘 모르겠지만, Qiita에 좋은 글들이 많이 올라오는 것 같습니다.   
영미권이나 한국 블로그와는 다른 시각으로 분석한 글들을 번역해서 올려주는 분들이 여러 채널에 있는데, 대체로 치타의 글을 번역 했다는 공통점이 있었습니다.

### Comment 28185

- Author: savvykang
- Created: 2024-08-21T14:01:44+09:00
- Points: 1
- Parent comment: 28129
- Depth: 2

구글검색 자동완성에서 키타와 zenn을 비교하는 검색어를 추천해줘서 zenn도 찾을 수 있었습니다. 정보 감사드립니다

### Comment 28148

- Author: uyeong21c
- Created: 2024-08-20T10:54:30+09:00
- Points: 1
- Parent comment: 28129
- Depth: 2

Qiita는 키타 라고 읽으시면 됩니다.

### Comment 28151

- Author: bus710
- Created: 2024-08-20T12:11:39+09:00
- Points: 1
- Parent comment: 28148
- Depth: 3

앗 그렇군요 머쓱

### Comment 28111

- Author: tsboard
- Created: 2024-08-19T16:32:00+09:00
- Points: 2

굉장히 흥미로운 결과입니다. Bun의 경우 웹프레임워크로 ElysiaJS가 많이 추천되는데, Bun이 제공하는 최적화된 API를 쓰지 않으면 오히려 퍼포먼스가 떨어지는 문제가 있었습니다. Koa.js 를 사용했다고 되어 있는데 그 쪽에서 퍼포먼스가 많이 떨어졌을 것으로 추측됩니다.

### Comment 28109

- Author: cometkim
- Created: 2024-08-19T15:41:47+09:00
- Points: 3

런타임과 시스템 통합의 차이를 구분해서 보아야할텐데요.  
  
Bun이 자랑하는 성능은 전반적으로 JSC의 특성과, 일부 시스템 통합의 최적화(또는 기능축소), 좋은 기반 라이브러리의 선택에서 기인합니다.  
  
그래서 소규모 벤치마크에서는 Bun이 이기는 경향이 있지만 대규모/롱러닝 벤치마크에서는 Node.js에 밀리는 경향이 동시에 있어요.
