2oneweek.dev

05. Node.js

    Tags

  • JavaScript
05. Node.js thumbnail

Node.js

Node는 서버 프로그래밍 사용에 이용된다. 서버 프로그래밍에서는 동시 접속을 고려해야 된다.


그러나 자바스크립트는 싱글 스레드다. 한 함수가 호출되어 실행되는 동안 다른 함수가 호출되지 못한다. 즉 자바스크립트는 동기 처리를 한다.(하나가 끝나야 다른 하나가 실행이 된다.)


Node.js에서의 자바스크립트는 비동기 처리를 한다. 하나의 함수가 호출되고 끝나기 전에 다른 함수가 실행 될 수 있다. 하나의 함수가 실행되는 와중에, 다른 짧은 함수가 실행되어 먼저 끝날 수 있게 된다. 이것을 비동기라고 한다.

  • 이런 비동기 처리는 C++로 구성된 V8엔진 덕분인데, C++의 Semapore와 Mutex를 이용할 수 있기 때문이다.

여기서 es5의 context가 큰 힘을 발휘하게 된다.

  • es3의 경우 한 함수를 실행하기 위해 Scope Chain과 Activation Object가 필요한데, idle time 발생 시 다른 함수를 실행하기 위한 Scope Chain과 Activation Object를 갈아끼워야 한다. 서버와 같은 프로그램에선 이것은 큰 오버헤드를 발생시킨다.
  • es5는 함수 실행에 필요한 모든것이 하나의 Context안에 있으므로, es3의 실행 컨텍스트 환경보다 엔진 처리가 빠르다.

개발자 관점에서 실행 컨텍스트에 최적화된 코드를 작성해야된다. 따라서 엔진 처리를 이해해야 된다.

Written by@2-one-week
현재 블로그 개발 중

GitHubLinkedIn