테스트 환경
이름 | 설명 |
CPU | AMD Ryzen 7 1700 |
Memory | DDR4 32GB |
테스트 툴
옵션
- 동시요청 : 2500
- 요청시간 : 30초
- 파이프라이닝 : 4
> autocannon -c 2500 -d 30 -p 4 127.0.0.1:8081
테스트 대상
- (Node.js) express
- (Node.js) hyper-express
- Go
- Rust
테스트 방법
- 각 웹서버는 '/' path 만 구현되어 있으며, 요청 수신 시 Hello를 응답한다.
- 각 웹 서버 별 30초 동안 요청 처리 개수를 측정한다.
결과
- 예상대로, express가 가장 낮은 성능을 보여주었다. 추가적으로, 타임아웃 에러가 928건 발생하였다.
- rust와 golang은 거의 동일한 성능을 보여주었다.
- rust와 golang은 express보다 약 2배 빠른 성능을 보여주었다.
- hyper-express는 Node.js 임에도 가장 좋은 성능을 보여주었다.
- hyper-express는 golang과 rust보다 약 1.3배 빠른 성능을 보여주었으며, express보다 약 2.7배 빠른 성능을 보여주었다.
결론
- Node.js라고 해서 rust나 golang보다 느린 것이 절대 아니며, 웹 서버 라이브러리마다 성능이 다를 수 있다.
- rust와 go는 유사한 성능을 보여주었다.
- express는 매우 느리다.
- hyper-express는 매우 빠르다.
'컴퓨터 공학 > JavaScript' 카테고리의 다른 글
Function.bind(this, ...)가 필요한 경우 (0) | 2022.02.16 |
---|---|
쿼리 대신 TypeOrm으로 DB 통신하기 (샘플) (0) | 2022.02.08 |
Node.js 버전 강제하기 (0) | 2022.01.19 |
esModule (ESM) 라이브러리를 CommonJS (CJS) 앱에서 사용하기 (0) | 2022.01.19 |
데스크탑에서 JS 또는 TS Playground 앱 (RunJS) (0) | 2022.01.13 |