Rust vs Zig vs Go Performance

Tóm tắt ngắn:
- Video so sánh hiệu năng của ba ngôn ngữ lập trình: Rust, Zig và Go, tập trung vào các ứng dụng HTTP.
- Điểm mấu chốt là so sánh độ trễ (latency), thông lượng (throughput - số request/giây), mức độ bão hòa tài nguyên (CPU, bộ nhớ), và tỷ lệ lỗi. Các framework được sử dụng là Actix (Rust), thư viện chuẩn (Go), và một framework Zig tương đối mới.
- Kết quả cho thấy Rust và Zig có hiệu năng vượt trội so với Go, đặc biệt là về độ trễ và khả năng xử lý lượng request lớn. Go dễ bị giảm hiệu năng và gặp lỗi "out of memory" khi tải tăng cao.
- Phương pháp được sử dụng là benchmark trên cụm Kubernetes với các instance EC2 lớn, đo đạc các chỉ số hiệu năng trong khoảng thời gian dài (2 giờ, được rút gọn trong video).
Tóm tắt chi tiết:
Video bắt đầu bằng việc giới thiệu về bài benchmark so sánh hiệu năng của Rust, Zig và Go trong các ứng dụng HTTP. Người nói sử dụng Actix (Rust), thư viện chuẩn (Go) và một framework Zig mới. Bốn chỉ số chính được theo dõi: độ trễ (P99 percentile), thông lượng (request/giây), mức độ sử dụng CPU và bộ nhớ, và tỷ lệ lỗi. Môi trường test là cụm Kubernetes trên các instance EC2 lớn, sử dụng instance Graviton để chạy client. Ứng dụng test đơn giản: một endpoint trả về dữ liệu cứng.
Phần 1: Kiểm tra trạng thái không tải: Video cho thấy mức sử dụng bộ nhớ khi không tải: Rust thấp (dưới 1MB), Zig cao hơn (khoảng 25MB).
Phần 2: Benchmark dưới tải: Khi tải tăng lên, Go nhanh chóng cho thấy độ trễ cao hơn Rust và Zig. Đến khoảng 20.000 request/giây, Go bắt đầu giảm hiệu năng đáng kể. Sau khi tối ưu, Go vẫn không thể cạnh tranh về độ trễ với Rust và Zig. Vì vậy, phần còn lại tập trung vào so sánh Rust và Zig.
Phần 3: So sánh Rust và Zig: Cả Rust và Zig đều đạt hiệu năng cao, nhưng Rust bắt đầu giảm hiệu năng và tăng độ trễ ở khoảng 98.000 request/giây, đồng thời tỷ lệ lỗi tăng do timeout. Zig đạt hiệu năng cao nhất, khoảng 100-118.000 request/giây.
Phần 4: Kết quả tổng quan: Video trình bày đồ thị cho thấy Go có thông lượng thấp nhất (khoảng 70.000 request/giây), trong khi Rust và Zig đạt trên 100.000 request/giây. Rust và Zig có độ trễ thấp hơn Go đáng kể. Go thường xuyên bị giết do hết bộ nhớ.
Phần 5: Kết luận: Người nói kêu gọi người xem đóng góp ý kiến cải thiện thiết kế bài test hoặc gửi pull request. Anh ấy cũng nhắc đến playlist các video benchmark khác.
Những câu nói đáng chú ý: "Goling started to degrade...", "Rust starts to degrade...", "Goling also starts to drop some requests...", "the maximum number of requests that Zig can process is around 100 118 requests per second while rust can handle 113". Những câu này nhấn mạnh sự khác biệt về hiệu năng giữa ba ngôn ngữ.