[Korean FE Article] 새로운 클래스 필드를 통한 더 빠른 인스턴스 초기화
글 링크: https://bit.ly/3In1Vth
소개
V8은 v7.2부터 클래스 필드에 대한 지원을 제공했는데요. 클래스 필드의 초기화가 일반 객체 프로퍼티 할당보다 훨씬 느려 사용을 망설이셨을 겁니다. 스타트업 스냅샷까지 활용하는 하드 유저들은 특히 클래스 필드 초기화가 스냅샷에서 동작하지 않는 문제로, 다른 접근법을 선택해오셨을 것 같은데요. Node.js 18.0.0 릴리즈에서 이런 문제점들이 고쳐졌으니, 다시 한 번 클래스 필드 기능 도입을 고려해보셔도 좋을 것 같습니다. Node.js는 어떻게 클래스 필드 초기화 성능을 높일 수 있었는지, V8 개발자의 설명을 들어보시는 건 어떠실까요? 저에게 이 글이 그랬듯이, 여러분에게도 자바스크립트 엔진을 더 잘 이해할 수 있는 계기가 되는 글이 되길 바랍니다! 😁
tl;dr
클래스 필드 초기화는 인라인 캐시를 사용하지 못했어서 느렸다.
인라인 캐시를 사용할 수 있게 새로운 바이트코드와 IR 명령코드가 도입됐다.
인라인 캐시 적용으로 클래스 필드와 프라이빗 메소드 초기화 성능이 개선됐다.
Node.js의 몇 가지 빌트인 클래스도 해당 업데이트의 덕을 봤다.