本內容是對知名性能評測博主 Anton Putra Rust vs. Go (Golang): Performance 2025 內容的翻譯與整理, 有適當刪減, 相關數據和結論以原作結論為準。
再次對比 Rust 和 Go,但這次我們使用的是最具性能優勢的 HTTP 服務器庫---
Hyper,它基于 Tokio 異步運行時。如果你想構建任何 Web 應用,Tokio 運行時已經成為事實上的標準,許多框架(如 Axum)實際上都是構建在 Hyper 和 Tokio 之上的。事實上,在過去的一年里,測試過的所有語言/框架中,Hyper 是最快的框架。
所有的測試都在 AWS 上運行,在本次視頻中,我使用的基礎設施與之前的視頻完全相同:我使用 m7a.large EC2 實例,并通過 Systemd運行應用程序,而客戶端和監控代理則運行在 EKS(Elastic Kubernetes Service)集群上。
好了,現在讓我們開始測試!整個測試大約進行了 2 小時,但在編輯(視頻)時我將其壓縮到了幾分鐘。我們主要測量以下幾個指標:
- 延遲(Latency),使用 P90 百分位作為衡量標準。
- 吞吐量(Throughput),即每秒請求數(Requests Per Second)。
- CPU 使用率。
- 內存使用情況(Memory Usage)。
需要注意的是,這里的內存使用情況是針對整個虛擬機(VM)的,因此可能不像直接從 Kubernetes 運行的容器中測量的那樣準確。按照慣例,我會再運行 一分鐘的測試,然后我們逐個分析每個圖表。
測試結果分析
首先,我們來看吞吐量(Throughput),即每秒請求數。從結果來看,Go 的表現與之前視頻中的水平相當,但 Rust 再次成為最快的應用。它在 僅使用兩個 CPU 的情況下,達到了接近 160,000 請求/秒,而其他任何應用都無法接近這個水平,Zig 可能是最接近的一個。
接下來是延遲(Latency),這是最重要的指標之一。在這項測試中,Rust 同樣比 Go 表現更好。
然后是 CPU 使用率(CPU Usage),從圖表可以看到,Rust 的 CPU 占用率明顯比 Go 低,意味著它在同等負載下更加高效。
最后是 內存使用情況(Memory Usage),不過這并不是本次視頻的重點,因此我們不做過多分析。
如果你知道哪種編程語言或運行時能與 Rust 競爭,請告訴我!如果你還能幫助用該語言開發一個簡單的 Web 服務器,那就更棒了。