Offcanvas

개발자

웹킷, 새 바이트코드 형식 지원··· "페이스북 메모리 소모 10% 줄어"

2019.06.26 Paul Krill  |  InfoWorld
애플 웹킷 브라우저 엔진에 쓰이는 자바스크립트 엔진인 '자바스크립트코어(JavaScriptCore)'가 업그레이드됐다. 메모리 효율성과 타입 안정성을 개선하는 새 바이트코드 형식이 추가됐다.

새 형식의 장점은 지난 21일 웹킷 팀의 공고를 통해 알려졌다.  메모리 소비를 줄이고 바이트코드를 디스크에 캐시되도록 하는 것이 핵심이다. 웹킷 팀은 새 포맷이 평균적으로 메모리를 50% 더 적게 사용한다고 설명했다. 페이스북이나 레딧 등 자바스크립트를 많이 쓰는 웹사이트의 경우 전체적으로 10% 정도 메모리 소비가 줄어들게 된다. 이번 새 포맷의 가장 큰 변화는 다음 2가지다.

- 이제 단절된 실행 인코딩은 사라지게 된다. 이것은 곧 바이트코드가 다이렉트 쓰레드될 필요가 없음을 의미한다. 기존에는 명령 주소를 디스크에 저장할 수 없어 해야 했지만, 이제 프로그램별로 실행할 수 있게 됐다.

- 명령을 한정적으로 혹은 넓게 인코딩해 저장과 실행에 모두 적합한 단일 포맷을 만들 수 있게 됐다. 한정적인 명령을 이용하면 옵코드(opcode)와 오퍼랜즈(operands)가 각각 1바이트를 차지한다. 넓은 명령은 특별한 싱글 바이트 옵코드인 op_wide로 구성된다. 기존 옵코드와 그 인수용 4바이트 슬롯 이후에 연속적으로 이어진다.

또한 새 바이트코드는 메타데이터 테이블을 지원한다. 링크할 경우 사이드 테이블이 일정한 명령과 함께 작성할 수 있는 데이터로 초기화된다. 또한 바이트코드 관련 인프라를 개선해 타입 안정성을 강화했다. 새 바이트코드용 캐시 API는 웹킷 리포에서 개발 단계로 올라와 있다. 개발자 누구나 bugs.webkit.org에서 참여해 공헌할 수 있다.

그동안 이 프로젝트는 낡은 바이트코드 형식 관련해서 크게 2가지 문제를 해결하는 데 집중해 왔다. 너무 많은 메모리를 사용하는 것이 첫 번째였고 두 번째는 작성 가능한 명령 스트림을 추가하는 것이다. 이번 업그레이드로 바이크코드 스트림에 대한 메모리 매핑을 방지할 수 있다. 또한 기존의 바이트코드 형식도 최적화돼 다이렉트 쓰레딩 같은 이익도 없어졌다.

새 바이트코드 형식은 사파리 12.1 브라우저부터 사용할 수 있다. 이미 iOS 12.1과 맥OS 10.14.4, 사파리 테크놀로지 프리뷰에서 제공하는 버전이다. 사파리 테크놀로지 프리뷰는 webkit.org에서 다운로드할 수 있다. ciokr@idg.co.kr
CIO Korea 뉴스레터 및 IT 트랜드 보고서 무료 구독하기
추천 테크라이브러리

회사명:한국IDG 제호: CIO Korea 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아01641 등록발행일자 : 2011년 05월 27일

발행인 : 박형미 편집인 : 천신응 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.