일렉트론 앱 성능 향상

일렉트론에서 사용하는 CPU 및 디스크 리소스의 양을 줄이는 동시에 사용자 입력에 보다 빠르게 반응하고 빠른 작업을 완료하도록 하는 방법을 일렉트론 공식문서에서는 제공하고 있습니다.

1. 불필요한 모듈의 포함


Node의 경우 어떠한 모듈을 추가하기 전에 항상 해당 모듈을 검사 해보길 추천합니다.
흔히 NPM 패키지를 통해서 가장 많이 사용 중인 모듈이나 깃허브에서 가장 많은 별을 받은 모듈을 사용하는 경우가 많은데 불필요한 모듈이 포함 될 수 있으며 그로 인해 불필요한 리소스와 작업을 진행하게 될 수 있습니다

일렉트론의 초창기 버전의 경우 네트워크 연결에 대한 체크 부분에 오류가 있었고 이 부분이 해결되기 전에 많은 개발자들이 isOnliln() 메서드를 포함 모듈을 사용했다고 합니다.

그 모듈엔 100,000줄이 넘는 포트에 대한 정보가 있었고 해당 모듈을 require('module') 할때 마다 그 정보를 분석하고 읽어드리는데 많은 비용을 사용했다고 합니다

위와 같은 상황이 발생하지 않도록 개발자들은 모듈을 추가할때 일렉트론 공식문서에서는 개발자가 한번 더 그 모듈을 체크해보는 것을 추천하고 있습니다.

  1. 포함된 모듈의 의존성 사이즈, 그 요청된 리소스를 불러오는데 드는 사이즈
  2. 일렉트론 앱에 사용할 모듈의 리소스

해당 모듈을 불러올때 CPU 정보와 힙메모리 정보를 만드는 것을 아래의 명령어로 수행할 수 있습니다.

node --cpu-prof --heap-prof -e <span style=color:red>"require('request')"</span>

해당 명령어가 실행이 안되는 이슈가 있어서 찾아보니
해당 명령어는 NODE 사이트를 확인해보니 12.0.0 노드버전 부터 지원한다고 하네요 </code>

  • requst 모듈은 이제 더 이상 지원하지 않는걸로 알고 있고 supervisor 라는 모듈을 사용한다고 들었는데…?

명령어를 실행하면 실행한 앱의 디렉터리 안에 .cpuprofile.heapprofile 이 생성 되어지고 이를 통해서 크롬 개발자도구에서 PerformanceMemory 탭에서 각각 분석 할 수 있다고 합니다.

jenkins jenkins

Notices


영어공부를 통해서 영문자료를 번역하다보니 오역도 많고 모자란 부분이 많습니다 공식문서 보시면서 확인하시는걸 추천드려요!

참조


Node 공식문서
Electron 공식문서
Electron 공식문서 성능