docker nodejs base image 에 alpine3.13 에 대한 이미지가 있어서 릴리즈노트를 확인했다.
Node.js (LTS) is compiled with -O2 instead of -Os which noticeably improves performance. 란 구문이 눈에 띄었다.
noticeably improves 란 추상적인 표현은 호기심을 자극하기에 충분했다.
히스토리
처음에 빌드 플래그 변경을 제안한 사람에 따르면, 빌드 플래그 수정으로 15% speedup 이 있을 것이라고 하였다.
이에 몇몇 알파인 패키지들이 O2 로 전환되었고, Node.js도 2020-12-19 커밋에 포함되었다.
여기엔 아래와 같은 코멘트가 달려있고, v8/web-tooling-benchmark를 사용한 것으로 보였다.
1 2 3
# Compiling with O2 instead of Os increases binary size by ~10% # (53.1 MiB -> 58.6 MiB), but also increases performance by ~20% # according to v8/web-tooling-benchmark
테스트1
빌드 플래그의 변경으로 nodejs 유저가 베이스 이미지의 버전을 하나 올려주는 것만으로 어플리케이션의 성능을 20% 까지 올릴 수 있다는 이야기로 보였다.
fastify/benchmarks 레파지토리의 Express.js 를 아래처럼 도커라이징했다.