25 puan yazan xguru 2024-06-28 | 2 yorum | WhatsApp'ta paylaş
  • 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

 
ragingwind 2024-06-28

Oldukça dikkat çekici bir örnek.

 
xguru 2024-06-28

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