- 구글 시트 팀은 2022년 크롬의 WasmGC 사용을 발표후, 서로 협력해왔음
- 이는 구글의 앱들이 WasmGC에서 실행되도록 하는 선례를 만듦
- 문제점: JavaScript
- Google Sheets 계산 엔진은 원래 Java로 작성되어 2006년 출시되었고, 서버에서 모든 계산이 이루어짐
- 2013년부터 JavaScript를 사용하여 브라우저에서 실행됨
- Google Web Toolkit(GWT)를 이용하다가 나중에는 Java to Closure JavaScript transpiler(J2CL)를 사용
- JavaScript 계산엔진은 Web Worker에서 실행되며
MessageChannel
을 통해 메인 스레드와 통신함 - JavaScript 버전이 Java 버전보다 3배 이상 느림
- JavaScript가 Java보다 느린 이유
- JavaScript는 동적 언어로 JIT 컴파일러를 통해 성능이 향상되었지만 여전히 제약이 있음
- 느슨한 타입과 동적 동작으로 인해 최적의 코드 생성이 어려움
- TypeScript도 개발을 쉽게 할 뿐 최적화에 필요한 보장을 제공하지 않음
- 해결책: WasmGC
- WebAssembly의 확장으로 가비지 컬렉션 언어 컴파일에 필요한 기능 추가
- Java와 같은 언어를 웹에서 거의 네이티브 속도로 실행 가능
- C++를 위한 Wasm보다 더 큰 영향력 예상됨
- Google Workspace와 Chrome의 협력
- 2020년 말부터 WasmGC 평가를 위해 협력 시작
- Sheets 계산 엔진을 이상적인 테스트 대상으로 선정
- V8 팀과 Binaryen(WASM 최적화 툴체인) 기여자들이 WasmGC 런타임과 AOT 최적화 담당
- 최적화 과정
- 초기 버전은 JavaScript보다 2배 느렸으나 지속적인 최적화 진행중
- JVM과 V8의 핵심 최적화 기법을 복제(가상 메소드 디스패칭, Speculative Inlining 과 Devirtualization 적용만으로 40% 속도 향상)
- 고도로 최적화된 브라우저 API 활용 (예: 정규표현식 처리 100배 향상)
- JavaScript 특화 코딩 패턴 제거
- 결론
- WasmGC는 웹 애플리케이션 개발 방식을 발전시킬 잠재력을 가진 기술
- 향후에 WasmGC가 공유 메모리 멀티스레딩 지원과 단일 스레드 성능 향상 기대
- 모든 웹 개발자들에게 고성능 프로젝트에 WasmGC를 사용 권장
결론적으로 JavaScript 에서 WasmGC로 포팅해서 얼마나 빨라졌는지에 대해서는 이야기가 없는데, 아래 글에 보면 2배 빨라졌다고 합니다.
Doubling calculation speed and other new innovations in Google Sheets