본문으로 건너뛰기

개선된 코드 캐싱

· 약 4분
미스리 알레, 최고 코드 캐셔

V8은 코드 캐싱을 사용하여 자주 사용되는 스크립트의 생성된 코드를 캐싱합니다. Chrome 66부터 우리는 상위 레벨 실행 후 캐시를 생성하여 더 많은 코드를 캐싱하고 있습니다. 이는 초기 로드 시 파싱 및 컴파일 시간의 20–40% 감소로 이어집니다.

V8 릴리즈 v6.6

· 약 6분
V8 팀

6주마다 우리는 릴리즈 프로세스의 일환으로 V8의 새로운 브랜치를 만듭니다. 각 버전은 Chrome 베타 마일스톤 직전에 V8의 Git 마스터에서 분기됩니다. 오늘 우리는 최신 브랜치인 V8 버전 6.6을 발표하게 되어 기쁩니다. 이 버전은 출시 전 몇 주간 Chrome 66 정식 버전과 조정되어 베타로 제공됩니다. V8 v6.6에는 개발자 중심의 다양한 편리함이 포함되어 있습니다. 이 게시글에서는 출시를 기대하며 몇 가지 하이라이트를 살펴봅니다.

백그라운드 컴파일

· 약 4분
[로스 맥일로이](https://twitter.com/rossmcilroy), 메인 스레드 옹호자

요약: Chrome 66부터 V8은 JavaScript 소스 코드를 백그라운드 스레드에서 컴파일하여 일반적인 웹사이트에서 메인 스레드가 컴파일에 소비하는 시간을 5%에서 20% 정도 감소시킵니다.

배경

Chrome은 41버전부터 V8의 StreamedSource API를 통해 JavaScript 소스 파일을 백그라운드 스레드에서 구문 분석하는 기능을 지원해 왔습니다. 이를 통해 V8은 Chrome이 네트워크로부터 파일의 첫 번째 청크를 다운로드하자마자 JavaScript 소스 코드 구문 분석을 시작하고, Chrome이 파일을 네트워크로 스트리밍하는 동안 병렬로 구문 분석을 계속 진행할 수 있습니다. 이렇게 하면 파일 다운로드가 완료될 때쯤 V8은 JavaScript 구문 분석을 거의 마칠 수 있기 때문에 로드 시간 향상에 상당한 도움이 됩니다.

JS에서 DOM로, 그리고 다시 되돌아오는 경로 추적

· 약 4분
DOM의 동맹 — 울란 데겐바에브, 알렉세이 필리포브, 미하엘 립파우츠, 그리고 한네스 페이어

Chrome 66에서 메모리 누수를 디버깅하는 것이 훨씬 쉬워졌습니다. Chrome DevTools는 이제 C++ DOM 객체를 추적하고 스냅샷을 찍을 수 있으며 JavaScript에서 참조된 모든 접근 가능한 DOM 객체를 표시할 수 있습니다. 이 기능은 V8 가비지 컬렉터의 새로운 C++ 추적 메커니즘의 이점 중 하나입니다.

게으른 역직렬화

· 약 5분
Jakob Gruber ([@schuay](https://twitter.com/schuay))

요약: 최근 V8 v6.4에서 기본적으로 게으른 역직렬화를 활성화하여 V8의 브라우저 탭당 메모리 소비량을 평균적으로 500 KB 이상 감소시켰습니다. 자세히 알아보세요!

V8 스냅샷 소개

하지만 먼저, V8이 힙 스냅샷을 사용하여 새 Isolate(대략 크롬의 브라우저 탭과 일치)를 생성하는 속도를 어떻게 높이는지에 대해 살펴보겠습니다. 제 동료 Yang Guo는 사용자 정의 시작 스냅샷 기사에서 이에 대해 잘 설명했습니다:

V8 릴리스 v6.5

· 약 4분
V8 팀

매 6주마다, 우리는 릴리스 프로세스의 일환으로 V8의 새로운 브랜치를 생성합니다. 각 버전은 크롬 베타 마일스톤 직전에 V8 Git 마스터에서 파생됩니다. 오늘 우리는 우리의 최신 브랜치인 V8 버전 6.5를 발표하게 되어 기쁩니다. 이는 몇 주 후 Chrome 65 Stable과의 조정에 따라 출시될 때까지 베타 상태에 있습니다. V8 v6.5는 다양한 개발자 중심의 기능으로 가득합니다. 이 게시물은 출시를 기대하며 몇 가지 주요 사항을 미리 제공합니다.

해시 테이블 최적화: 해시 코드 숨기기

· 약 4분
[사트야 구나세카라](https://twitter.com/_gsathya), 해시 코드의 관리인

ECMAScript 2015는 Map, Set, WeakSet, WeakMap과 같은 해시 테이블을 기본적으로 사용하는 몇 가지 새로운 데이터 구조를 도입했습니다. 이 글에서는 최근 개선 사항에 대해 설명하며, V8 v6.3+이 해시 테이블에서 키를 저장하는 방법을 제공합니다.

크롬, Speedometer 2.0을 환영합니다!

· 약 3분
Blink 팀과 V8 팀

Speedometer 1.0이 2014년에 처음 출시된 이후, Blink와 V8 팀은 이 벤치마크를 인기 있는 JavaScript 프레임워크의 실제 사용을 위한 기준으로 삼아왔으며 상당한 속도 향상을 달성했습니다. 이러한 향상이 실제 사용자에게 주는 혜택을 실시간 웹사이트를 측정하여 독립적으로 확인했으며, 인기 있는 웹사이트의 페이지 로드 시간이 개선됨에 따라 Speedometer 점수도 향상되었습니다.

V8 릴리즈 v6.4

· 약 4분
V8 팀

매 6주마다 릴리즈 프로세스의 일환으로 V8의 새로운 브랜치를 생성합니다. 각 버전은 Chrome Beta 마일스톤 직전에 V8의 Git 마스터에서 분기됩니다. 오늘 우리는 V8 버전 6.4의 새로운 브랜치를 발표하게 되어 기쁩니다. 이 버전은 몇 주 후 Chrome 64 Stable과 함께 릴리즈될 때까지 베타 상태입니다. V8 v6.4는 개발자들에게 유용한 여러 기능들로 가득 차 있습니다. 이 게시물은 릴리즈를 앞두고 주요 내용을 미리 살펴봅니다.

자바스크립트 코드 커버리지

· 약 8분
Jakob Gruber ([@schuay](https://twitter.com/schuay))

코드 커버리지는 애플리케이션의 특정 부분이 실행되었는지 여부와 선택적으로 얼마나 자주 실행되었는지에 대한 정보를 제공합니다. 이는 테스트 스위트가 특정 코드베이스를 얼마나 철저히 검증하는지 판단하는 데 자주 사용됩니다.

왜 유용한가요?

자바스크립트 개발자로서 코드 커버리지가 유용할 수 있는 상황에 자주 처하게 될 것입니다. 예를 들어:

  • 테스트 스위트의 품질에 관심이 있나요? 오래된 레거시 프로젝트를 리팩토링 중인가요? 코드 커버리지는 코드베이스의 어떤 부분이 커버되었는지를 정확히 보여줄 수 있습니다.
  • 코드베이스의 특정 부분이 빠르게 도달되었는지 알고 싶나요? console.log를 이용한 printf 스타일 디버깅이나 코드를 수동으로 디버깅하는 대신, 코드 커버리지는 애플리케이션의 어떤 부분이 실행되었는지에 대한 실시간 정보를 표시할 수 있습니다.
  • 또는 속도 최적화를 위해 어느 부분에 집중해야 할지 알고 싶나요? 실행 횟수는 핫 함수와 루프를 지적할 수 있습니다.