- Google Sheets ekibi, 2022’de Chrome’un WasmGC kullanımını duyurmasının ardından birlikte çalıştı
- Bu, Google uygulamalarının WasmGC üzerinde çalışmasına yönelik bir emsal oluşturdu
- Sorun: JavaScript
- Google Sheets hesaplama motoru başlangıçta Java ile yazıldı ve 2006’da kullanıma sunuldu; tüm hesaplamalar sunucuda yapılıyordu
- 2013’ten itibaren JavaScript kullanılarak tarayıcıda çalıştırılmaya başlandı
- Önce Google Web Toolkit (GWT), daha sonra Java to Closure JavaScript transpiler (J2CL) kullanıldı
- JavaScript hesaplama motoru Web Worker üzerinde çalışıyor ve ana iş parçacığıyla
MessageChannel üzerinden iletişim kuruyor
- JavaScript sürümü, Java sürümünden 3 kattan fazla daha yavaş
- JavaScript neden Java’dan daha yavaş?
- JavaScript dinamik bir dil; JIT derleyiciler performansı artırsa da hâlâ sınırlamalar var
- Gevşek tipler ve dinamik davranışlar nedeniyle en uygun kod üretimi zorlaşıyor
- TypeScript de geliştirmeyi kolaylaştırıyor, ancak optimizasyon için gerekli garantileri sağlamıyor
- Çözüm: WasmGC
- WebAssembly’nin bir uzantısı olarak, çöp toplayıcılı dillerin derlenmesi için gereken özellikleri ekliyor
- Java gibi dillerin web’de neredeyse yerel hızda çalışmasını mümkün kılıyor
- C++ için Wasm’dan daha büyük bir etki yaratması bekleniyor
- Google Workspace ile Chrome’un iş birliği
- 2020 sonundan itibaren WasmGC’yi değerlendirmek için birlikte çalışmaya başladılar
- Sheets hesaplama motoru ideal test hedefi olarak seçildi
- V8 ekibi ile Binaryen (WASM optimizasyon araç zinciri) katkıcıları, WasmGC çalışma zamanı ve AOT optimizasyonlarından sorumlu oldu
- Optimizasyon süreci
- İlk sürüm JavaScript’ten 2 kat daha yavaştı, ancak sürekli optimizasyon yapıldı
- JVM ve V8’in temel optimizasyon teknikleri yeniden uygulandı (sanal metot dispatch’i, speculative inlining ve devirtualization’ın uygulanması tek başına %40 hız artışı sağladı)
- Yüksek düzeyde optimize edilmiş tarayıcı API’leri kullanıldı (ör. düzenli ifade işlemede 100 kat iyileşme)
- JavaScript’e özgü kodlama kalıpları kaldırıldı
- Sonuç
- WasmGC, web uygulaması geliştirme biçimini ileri taşıma potansiyeline sahip bir teknoloji
- Gelecekte WasmGC’den paylaşımlı bellekle çok iş parçacıklılık desteği ve tek iş parçacığında daha yüksek performans bekleniyor
- Tüm web geliştiricilerine, yüksek performans gerektiren projelerde WasmGC kullanmaları öneriliyor
2 yorum
Oldukça dikkat çekici bir örnek.
Sonuç olarak JavaScript'ten WasmGC'ye taşındığında ne kadar hızlandığına dair burada bir bilgi yok; ancak aşağıdaki yazıya göre 2 kat hızlanmış.
Doubling calculation speed and other new innovations in Google Sheets
Not: WebAssembly çöp toplama (WasmGC) artık Chrome'da varsayılan olarak etkin