자바스크립트 엔진은 어떻게 객체를 빠르게 탐색할 수 있게 되었을까?

자바스크립트의 동작 원리에 대해 공부를 하다가 자바스크립트 엔진에서 객체를 어떻게 관리하는지 최적화 방법에 대해 궁금해 졌습니다. 기본적으로 자바스크립트 객체는 key-value 형태의 해시 테이블(Hash Table) 구조를 기본으로 합니다. OOP 언어인 Java나 C++을 해보신 분들이라면, 클래스를 정의해서 객체 인스턴스를 생성하는 방식과 자바스크립트가 꽤 다르다는 것을 느끼셨을 것 같은데요. 개발자의 입장에서 본다면 자바스크립트처럼 프로퍼티나 메서드를 자유롭게 넣고 빼고 수정하는 방식이 편리하다고 볼 수 있으나, 내부에 성능적으로는 OOP 언어에 비해 많이 불리합니다. 자바스크립트 진영에서는 이러한 성능 이슈를 당연히 고민했고 이를 개선 하기 위한 여러가지 시도를 했습니다. 그 중에 하나로 V8 엔진에서 프로퍼티에 접근할 때 동적 탐색(dynamic lookup)이 아닌 히든 클래스(hidden class)를 사용하는 방식을 사용해 C++ 의 객체 프로퍼티 접근 성능을 보장하는 개선이 있었습니다. 자세한 원리는 아래에 첨부한 V8 공식 블로그에서 확인해 보시면 좋을 것 같습니다

Fast properties in V8

V8

Fast properties in V8

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 1월 31일 오전 6:52

 • 

저장 22조회 1,576

댓글 0