Node6에서 Node8로 업데이트시, 실제 성능 비교

사이트

성능 비교를 실시했지만, 이 대상은 단일 페이지의 중간정도의 큰 사이즈를 가진 React사이트이다. 서버에 수천개의 속성을 가진 JSON개체가 필요하며, 2113개의 DOM노드를 사용한 HTML을 리턴한다.

서버 렌더링 시간

가장 중요한 측정 기준으로 시작하자. 서버가 페이지를 렌더링하는데 걸리는 시간이다.

언뜩 보기엔 큰 차이가 없는 것 같다. 그러나 8번째 실행에서 Node 6에서 렌더링을 완료하기 까지 약 104ms가 걸렸다. Node8은 80ms이다.

이는 렌더링 시간이 23%나 감소한 것이다. 또한 좀더 구체적으로 말하면, 사이트를 제공하기 위해 하드웨가 필요로 하는 시간이 23%가 줄었다는 것이다.

이번에는 동일 테스트이지만 개발모드에서 React를 사용한다.

여러번 실행 후 평균적으로 약 31%가 감소된 것을 알 수 있다. 위 그림은 NODE_DEV가 production으로 설정하고 라이브러리 프로덕션 버전을 출시하는 것이 중요하다는 것을 알려준다. 이 성능 향상이 어디에서 오는 것인지는 정확히는 알기 힘들다.

테스트 스위트 실행

이 스위트는 500까지의  Jest 테스트에서 대부분이  React구성요소의 마운트 및 마운트 해제에 영향을 주고 있고, 일반적인 JavaScript이다.

10%를 단축할 수 있었다. JavaScript엔진 최적화를 일체하지 않았기 때문에 개선 정도를 줄여 표현되어 있다.

 

Webpack으로 빌드

webpack으로 빌드할 경우 약간의 디스크 I/O, Babel을 통한 대량의 트랜스 더미, 그리고 JS uglifying/minifying을 사용하여 JavaScript가 약 500KB에 해당한다.

실행시간동안 7%의 감소가 보인다.

NPM 설치

package.json에는 40개의 패키지가 있다. 그리고 dependency 트리에는 445개 이상의 패키지가 모두 업데이트되어 있다. NPM 3은 7Mbps다운로드였고 NPM 5는 20Mbps까지 늘어났다.

다음은 NPM 캐시를 우선하여 npm install을 실행했지만 각각 실행하는 동안 node_modules가 삭제되었다. 대부분 디스크I/O라고 생각하지만, 시간의 대폭적인 개선을 통해 그 이상의 성능이 나온다.

 NPM5가 설치시간을 1/3 단축하였다/

 

솔직히 말하면, Node8 에서 몇 %정도의 개선에만 기대하지 않지만, 서버 렌더링 시간이 1/4, NMP 설치가 1/3의 시간을 단축할 수 있다는 것이 장점이다.

 

원문: Upgrading from Node 6 to Node 8 : a real-world performance comparison (David Gilbertson)

 

Site Footer