# Google Sheets가 계산 워커를 JavaScript에서 WasmGC로 포팅한 이유

> Clean Markdown view of GeekNews topic #15574. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=15574](https://news.hada.io/topic?id=15574)
- GeekNews Markdown: [https://news.hada.io/topic/15574.md](https://news.hada.io/topic/15574.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2024-06-28T10:11:01+09:00
- Updated: 2024-06-28T10:11:01+09:00
- Original source: [web.dev](https://web.dev/case-studies/google-sheets-wasmgc)
- Points: 25
- Comments: 2

## Summary

Google Sheets 팀이 JavaScript의 성능 한계를 극복하기 위해 WasmGC를 사용했는데요. Java와 같은 언어를 웹에서 거의 네이티브 속도로 실행할 수 있는 가능성을 보여줍니다. Google Sheets의 경우 계산 속도가 기존 Javascript 버전보다 2배 정도 빨라졌는데요. 웹에서 고성능이 필요한 프로젝트에는 WasmGC를 활용하라고 추천합니다.

## Topic Body

- 구글 시트 팀은 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를 사용 권장

## Comments



### Comment 26726

- Author: ragingwind
- Created: 2024-06-28T10:18:20+09:00
- Points: 1

주목할만한 사례네요.

### Comment 26724

- Author: xguru
- Created: 2024-06-28T10:12:02+09:00
- Points: 4

결론적으로 JavaScript 에서 WasmGC로 포팅해서 얼마나 빨라졌는지에 대해서는 이야기가 없는데, 아래 글에 보면 2배 빨라졌다고 합니다.  
[Doubling calculation speed and other new innovations in Google Sheets](https://workspace.google.com/blog/sheets/new-innovations-in-google-sheets?hl=en)   
  
참고 : [WebAssembly 가비지 컬렉션 (WasmGC)이 이제 Chrome에서 기본적으로 사용 설정됨](https://developer.chrome.com/blog/wasmgc?hl=ko)
