Rust vs. Go: 性能測試(2025)

本內容是對知名性能評測博主 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 服務器,那就更棒了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/73549.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/73549.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/73549.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【NLP 48、大語言模型的神秘力量 —— ICL:in context learning】

目錄 一、ICL的優勢 1.傳統做法 2.ICL做法 二、ICL的發展 三、ICL成因的兩種看法 1.meta learning 2.Bayesian Inference 四、ICL要點 ① 語言模型的規模 ② 提示詞prompt中提供的examples數量和順序 ③ 提示詞prompt的形式(format) 五、fine-tune VS I…

兩數之和解題記錄

開始打算用一個數組保存差值,arr[target-nums[i]] i, 只要arr[nums[i]]有內容就能滿足target,返回arr[nums[i]]和i。但是會出現復數的情況,所以換成map。 換成map就只用一邊遍歷,一遍檢查和存入對應key就行了,value就…

P1722 矩陣Ⅱ - 洛谷

題源:P1722 矩陣 II - 洛谷 看了題目之后,需要注意的是: ①在1 ~ i 個格子中紅色數量 > 黑色數量 ②最后,在2 * n 個格子中,紅色數量 黑色數量 根據這兩個約束條件,可以知道,第一個格…

數據庫——MySQL基礎操作

一、表結構與初始數據 假設存在以下兩張表: 1. student 表 字段名數據類型描述idINT學生唯一標識符nameVARCHAR(100)學生姓名ageINT學生年齡sexVARCHAR(10)學生性別 初始數據: idnameagesex1張三20男2李四22女3王五21男 2. course 表 字段名數據類…

行業白皮書2025 | 益企研究院:AI時代的存儲基石

在當今科技飛速發展的時代,AI技術已成為推動各行業變革的關鍵力量。日前,益企研究院重磅發布《AI時代的存儲基石》白皮書。 下載方式:關注“渡江客涂鴉板”,回復st250326獲取免費下載地址 數據需求與技術挑戰: AI技術…

音視頻新人如何快速上手nginx-rtmp-module

一、整體設計架構 nginx-rtmp-module 是 Nginx 的一個擴展模塊,專門為 Nginx 添加了對 RTMP 協議的支持。其核心功能包括: RTMP推流(publish) RTMP拉流(play) 流轉發(relay) 流錄…

vue 封裝 Axios菜鳥教程

1、Axios依賴下載 $ npm install axios 2、以下鏈接為Axios 的api Axios 實例 | Axios中文文檔 | Axios中文網 3、 項目新建request.js,文件名稱按照駝峰命名法就可以 4、封裝request.js代碼如下 import axios from "axios"//創建axios實例&#xff0…

[項目]基于FreeRTOS的STM32四軸飛行器: 十一.MPU6050配置與讀取

基于FreeRTOS的STM32四軸飛行器: 十一.MPU6050 一.芯片介紹二.配置I2C三.編寫驅動四.讀取任務的測試五.MPU6050六軸數據的校準 一.芯片介紹 芯片應該放置在PCB中間,X Y軸原點,敏感度131表示范圍越小越靈敏。理想狀態放置在地面上X,Y&#xf…

iOS常見網絡框架

URLSession、Alamofire 和 Moya 1. URLSession 1.1 核心概念 URLSession 是 Apple 官方提供的網絡請求 API,封裝在 Foundation 框架中。它支持 HTTP、HTTPS、FTP 等協議,可用于: ? ? 普通網絡請求(GET/POST) ? …

AOA(到達角度)與TOA(到達時間)兩個技術的混合定位,MATLAB例程,自適應基站數量,三維空間下的運動軌跡,濾波使用UKF(無跡卡爾曼濾波)

本文介紹一個MATLAB代碼,實現了三維動態目標非線性定位與濾波系統,通過融合 到達角(AOA) 和 到達時間(TOA) 的混合定位方法,結合 無跡卡爾曼濾波(UKF) 處理非線性觀測模型,優化軌跡精度。代碼支持自適應基站數量配置,適用于復雜非線性場景的定位研究。 文章目錄 運行…

Ubuntu 重置密碼方法

目錄 修改過 root 密碼,重置密碼的方法沒改過 root 密碼?,重置密碼的方法 修改過 root 密碼,重置密碼的方法 Ubuntu 默認禁用root用戶,意思就是安裝好Ubuntu系統后,root用戶默認是沒有密碼的,普通用戶通過…

Leetcode 路徑總和 III

java 解法一:雙遞歸 class Solution {public int pathSum(TreeNode root, long targetSum) { //外層遞歸,把每個節點都當作路徑起點if(root null) return 0;int ret rootSum(root, targetSum);ret pathSum(root.left, targetSum);ret pathSum(root.right, targ…

WEB安全--SQL注入--利用log寫入webshell

一、原理: 這也是對之前文章的補充:WEB安全--SQL注入--INTO OUTFILE-CSDN博客 我們可以通過修改MySQL的log文件,用select關鍵字寫入木馬文件放在服務器物理地址中,通過訪問物理地址getshell。 二、條件: 用戶有寫入權限…

C++11中引入的比較常用的新特性講解(上)

目錄 1、C11簡介 2、統一的列表初始化 2.1、{}初始化 2.2、std::initializer_list 3、變量類型推導 3.1、auto 3.2、decltype 3.3、nullptr 4、范圍for循環 5、STL中一些變化 6、右值引用和移動語義 6.1、左值引用和右值引用 6.2、右值引用…

hugo+github pages 部署實驗室網站

!!太爽了,看了很久教程,自己試了好久,終于搞懂怎么把hugo和public單獨進行部署了!!!!! 目的是什么?目的當然是為了修改這天殺的hugo的模板。現在…

兩頭文件互引問題解決(前置聲明)

問題: 想必正在基礎階段學習的朋友們都遇見過以下問題吧 widget.h otherwidget.h 如上問題是,我在widget.h中引用了otherwidget.h ,在ohterwidget中又引用了widget.h,兩個頭文件互相引用產生了報錯 解決辦法: 那么我們該如何解…

Python 異常處理完全指南

目錄 一、異常處理基礎1. 基本語法結構 二、常見異常類型1. 內置異常層次2. 常見異常示例 三、多重異常處理1. 合并捕獲2. 分層處理 四、finally與else子句1. finally 應用場景2. else 使用技巧 五、自定義異常1. 創建異常類2. 異常繼承體系 六、異常鏈與上下文1. raise from 語…

【Qt】Ubuntu22.04使用命令安裝Qt5和Qt6

1、安裝Qt5 注意:Ubuntu22.04已經沒有 qt5-default ,因此不能一鍵安裝啦 1)安裝核心組件 sudo apt install qtbase5-dev qtchooser qt5-qmake qtcreator2)安裝QtCreator sudo apt install qtcreator3)安裝工具包、Qt Quick 開發的核心庫(qtdeclarative5-dev) sudo a…

手擼一個 deepseek 數據庫對話,打造一個企業智能通訊錄(ollama + deepseek + langchain)

前言 由于 deepseek 等大語言模型數據時效性問題,無法跟上現實世界信息的動態變化,企業內部信息更是無法理解,為了將 deepseek 應用到企業內部,之前有寫過通過聯網搜索、上傳文件、搭建知識等檢索增強生成(RAG&#xf…

線段樹SegmentTree

線段樹當中的幾個重要操作 1.PushUp 上推操作:由子節點算父節點的信息 p u s h u p push up pushup 操作的目的是為了維護父子節點之間的邏輯關系。當我們遞歸建樹時,對于每一個節點我們都需要遍歷一遍,并且電腦中的遞歸實際意義是先向底層…