25 điểm bởi xguru 2024-06-28 | 2 bình luận | Chia sẻ qua WhatsApp
  • Nhóm Google Sheets đã hợp tác chặt chẽ với Chrome kể từ sau khi công bố việc sử dụng WasmGC trong Chrome vào năm 2022
  • Điều này tạo ra một tiền lệ để các ứng dụng của Google có thể chạy trên WasmGC
  • Vấn đề: JavaScript
    • Engine tính toán của Google Sheets ban đầu được viết bằng Java và ra mắt vào năm 2006, khi đó mọi phép tính đều được thực hiện trên máy chủ
    • Từ năm 2013, nó bắt đầu chạy trong trình duyệt bằng JavaScript
      • Ban đầu dùng Google Web Toolkit (GWT), sau đó chuyển sang Java to Closure JavaScript transpiler (J2CL)
    • Engine tính toán JavaScript chạy trong Web Worker và giao tiếp với luồng chính thông qua MessageChannel
    • Phiên bản JavaScript chậm hơn phiên bản Java hơn 3 lần
  • Vì sao JavaScript chậm hơn Java
    • JavaScript là ngôn ngữ động, hiệu năng đã được cải thiện nhờ trình biên dịch JIT nhưng vẫn còn giới hạn
    • Kiểu dữ liệu lỏng lẻo và hành vi động khiến việc sinh mã tối ưu trở nên khó khăn
    • TypeScript cũng chỉ giúp phát triển dễ hơn chứ không cung cấp các đảm bảo cần thiết cho tối ưu hóa
  • Giải pháp: WasmGC
    • Một phần mở rộng của WebAssembly, bổ sung các tính năng cần thiết để biên dịch các ngôn ngữ có garbage collection
    • Cho phép chạy các ngôn ngữ như Java trên web với tốc độ gần mức native
    • Được kỳ vọng sẽ có tác động còn lớn hơn cả Wasm dành cho C++
  • Sự hợp tác giữa Google Workspace và Chrome
    • Bắt đầu hợp tác từ cuối năm 2020 để đánh giá WasmGC
    • Chọn engine tính toán của Sheets làm đối tượng thử nghiệm lý tưởng
    • Nhóm V8 và các cộng tác viên của Binaryen (toolchain tối ưu hóa WASM) phụ trách runtime WasmGC và tối ưu hóa AOT
  • Quá trình tối ưu hóa
    • Phiên bản ban đầu chậm hơn JavaScript 2 lần, nhưng việc tối ưu hóa liên tục vẫn đang được tiến hành
    • Tái hiện các kỹ thuật tối ưu hóa cốt lõi của JVM và V8 (chỉ riêng việc áp dụng virtual method dispatching, Speculative Inlining và Devirtualization đã giúp tăng tốc 40%)
    • Tận dụng các API trình duyệt được tối ưu hóa rất cao (ví dụ: xử lý biểu thức chính quy nhanh hơn 100 lần)
    • Loại bỏ các mẫu mã hóa chuyên biệt cho JavaScript
  • Kết luận
    • WasmGC là công nghệ có tiềm năng thúc đẩy cách phát triển ứng dụng web
    • Trong tương lai, WasmGC được kỳ vọng hỗ trợ multithreading bộ nhớ chia sẻ và cải thiện hiệu năng đơn luồng
    • Khuyến nghị mọi nhà phát triển web sử dụng WasmGC cho các dự án hiệu năng cao

2 bình luận

 
ragingwind 2024-06-28

Đây là một trường hợp đáng chú ý.

 
xguru 2024-06-28

Tóm lại, bài viết không nói việc chuyển từ JavaScript sang WasmGC đã giúp tăng tốc bao nhiêu, nhưng trong bài dưới đây có đề cập là nhanh gấp 2 lần.
Doubling calculation speed and other new innovations in Google Sheets

Tham khảo: WebAssembly garbage collection (WasmGC) hiện đã được bật mặc định trên Chrome