25 คะแนน โดย xguru 2024-06-28 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • ทีม Google Sheets ได้ร่วมมือกันอย่างต่อเนื่องหลังจากประกาศการใช้ WasmGC ใน Chrome เมื่อปี 2022
  • สิ่งนี้ได้สร้างบรรทัดฐานให้แอปของ Google สามารถรันบน 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 compiler จะช่วยเพิ่มประสิทธิภาพได้ แต่ก็ยังมีข้อจำกัด
    • การพิมพ์แบบหลวมและพฤติกรรมแบบไดนามิกทำให้สร้างโค้ดที่เหมาะสมที่สุดได้ยาก
    • TypeScript ช่วยให้พัฒนาได้ง่ายขึ้น แต่ไม่ได้ให้การรับประกันที่จำเป็นต่อการทำ optimization
  • ทางออก: WasmGC
    • ส่วนขยายของ WebAssembly ที่เพิ่มความสามารถซึ่งจำเป็นต่อการคอมไพล์ภาษาแบบ garbage-collected
    • ทำให้ภาษาต่าง ๆ เช่น Java สามารถรันบนเว็บได้ด้วยความเร็วใกล้เคียง native
    • คาดว่าจะมีอิทธิพลมากกว่า Wasm สำหรับ C++ เสียอีก
  • ความร่วมมือระหว่าง Google Workspace และ Chrome
    • เริ่มร่วมมือกันตั้งแต่ปลายปี 2020 เพื่อประเมิน WasmGC
    • เลือกเอนจินการคำนวณของ Sheets เป็นเป้าหมายทดสอบที่เหมาะสมที่สุด
    • ทีม V8 และผู้มีส่วนร่วมใน Binaryen (ชุดเครื่องมือสำหรับ optimization ของ WASM) รับผิดชอบด้านรันไทม์ WasmGC และ optimization แบบ AOT
  • กระบวนการ optimization
    • เวอร์ชันแรกช้ากว่า JavaScript ถึง 2 เท่า แต่ยังคงมีการ optimization อย่างต่อเนื่อง
    • จำลองเทคนิค optimization หลักของ JVM และ V8 (เพียงแค่นำ virtual method dispatch, speculative inlining และ devirtualization มาใช้ ก็เพิ่มความเร็วได้ 40%)
    • ใช้ Browser API ที่ผ่านการ optimization อย่างสูง (เช่น การประมวลผล regular expression เร็วขึ้น 100 เท่า)
    • ลบรูปแบบการเขียนโค้ดที่ออกแบบมาเฉพาะสำหรับ JavaScript
  • บทสรุป
    • WasmGC เป็นเทคโนโลยีที่มีศักยภาพในการพัฒนาวิธีสร้างเว็บแอปพลิเคชัน
    • ในอนาคตคาดว่า WasmGC จะรองรับ shared-memory multithreading และเพิ่มประสิทธิภาพแบบ single-thread
    • แนะนำให้นักพัฒนาเว็บทุกคนใช้ WasmGC สำหรับโปรเจ็กต์ที่ต้องการประสิทธิภาพสูง

2 ความคิดเห็น

 
ragingwind 2024-06-28

เป็นกรณีศึกษาที่น่าสนใจทีเดียว

 
xguru 2024-06-28

สรุปแล้วในบทความนี้ไม่ได้พูดถึงว่าการพอร์ตจาก JavaScript ไปเป็น WasmGC ทำให้เร็วขึ้นแค่ไหน แต่ถ้าดูจากบทความด้านล่าง ระบุว่าเร็วขึ้น 2 เท่า
Doubling calculation speed and other new innovations in Google Sheets

อ้างอิง: WebAssembly garbage collection (WasmGC) พร้อมเปิดใช้งานเป็นค่าเริ่มต้นใน Chrome แล้ว