Node.js v7이 V8 엔진을 5.4로 업데이트했습니다

Node.js 7.0.0 버전을 릴리스하면서 V8 자바스크립트 엔진이 5.1에서 최신 안정화 버전인 5.4로 업그레이드되었습니다. 이번 업그레이드는 새로운 언어 기능과 향상된 성능을 제공합니다.

새로운 ECMAScript 기능

지수 연산자 (ES2016)

이제 ** 연산자를 사용해 좌항을 우항으로 제곱할 수 있습니다. 예:

1
const maxInt = 2**32 - 1; // Equivalent to: Math.pow(2, 32) - 1

Object.values / Object.entries (ES2017)

Object.keys를 보완하는 두 개의 새로운 정적 메서드는 각각 열거가능한 자체 속성 값 또는 항목(키와 값의 두 요소로 된 배열)의 배열을 반환합니다. 예:

1
2
3
4
5
6
7
8
const obj = {
x: 0,
y: 100
};

const keys = Object.keys(obj); // [`x`, `y`]
const values = Object.values(obj); // [0, 100]
const entries = Object.entries(obj); // [[`x`, 0], [`y`, 100]]

Object.getOwnPropertyDescriptors (ES2017)

객체의 각 키와 그에 해당하는 속성 기술자(property descriptor)를 포함한 객체를 반환합니다. 예:

1
2
3
4
5
6
7
8
9
10
const obj = {
x: 0,
y: 100
};

const descriptors = Object.getOwnPropertyDescriptors(obj);
/*
{ x: {value: 0, writable: true, enumerable: true, configurable: true},
y: {value: 100, writable: true, enumerable: true, configurable: true} }
*/

성능과 메모리 최적화

From V8 5.2

다음을 포함하는 자바스크립트 내장 기능 개선:

  • isArray 메서드와 같은 Array 연산자
  • in 연산자
  • Function.prototype.bind

From V8 5.3

  • 새로운 Ignition 인터프리터는 이제 완전한 기능을 가지며 --ignition 플래그로 테스트할 수 있습니다. 더 많은 정보는 V8 엔진 팀의 블로그 글을 참고하세요.
  • 가비지 컬렉터가 향상되었으며 가득 찬 가비지 컬렉션 일시중지 시간을 최대 25%까지 줄일 수 있습니다.
  • ES6 Promise의 성능 개선

From V8 5.4

  • 저수준 메모리 장치에서의 온-힙 피크 메모리 소비를 최대 40%까지 줄였습니다.
  • V8 엔진의 파서 최적화로 오프-힙 피크 메모리 소비를 최대 20%까지 줄이고 시작 성능을 향상시킬 수 있었습니다.