日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Go vs Rust:文件上傳性能比較

來源: 責編: 時間:2023-11-20 08:58:07 286觀看
導讀在本文中,主要測試并比較了Go—Gin和Rust—Actix之間的多部分文件上傳性能。一、設置所有測試都在配備16G內存的 MacBook Pro M1 上執行。軟件版本為:Go v1.20.5Rust v1.70.0測試工具是一個基于 libcurl 并使用標準線程

在本文中,主要測試并比較了Go—Gin和Rust—Actix之間的多部分文件上傳性能。S8228資訊網——每日最新資訊28at.com

S8228資訊網——每日最新資訊28at.com

一、設置

所有測試都在配備16G內存的 MacBook Pro M1 上執行。S8228資訊網——每日最新資訊28at.com

軟件版本為:S8228資訊網——每日最新資訊28at.com

  • Go v1.20.5
  • Rust v1.70.0

測試工具是一個基于 libcurl 并使用標準線程的自定義工具,能夠發送多部分請求。S8228資訊網——每日最新資訊28at.com

資產目錄中有 100,000 個文件。每個文件的大小都是確切的 100K。這些文件數量在測試工作線程之間進行分配。同一個文件不會一遍又一遍地上傳。工作線程會循環處理分配給它們的文件。一旦它們處理完所有分配的文件,它們就會回到第一個文件重新開始。S8228資訊網——每日最新資訊28at.com

每個請求攜帶兩個文件作為多部分請求體。請求的頭部和體部大致如下:S8228資訊網——每日最新資訊28at.com

// -- Headers{  "content-length": "205150",  "content-type": "multipart/form-data; boundary=------------------------3f6a15690b315b91",}// -- Body--------------------------3f6a15690b315b91Content-Disposition: form-data; name="files"; filename="45469"Content-Type: application/octet-stream<<File suppressed>>--------------------------3f6a15690b315b91Content-Disposition: form-data; name="files"; filename="42102"Content-Type: application/octet-stream<<file suppressed>>--------------------------3f6a15690b315b91--

二、代碼

1.Go

package mainimport (    "github.com/gin-gonic/gin"    "github.com/jaevor/go-nanoid")func main() {    dst := "/Users/mayankc/Work/source/perfComparisons/uploads/"    canonicID, err := nanoid.Standard(21)    if err != nil {        panic(err)    }    router := gin.New()    router.POST("/upload", func(c *gin.Context) {        form, _ := c.MultipartForm()        files := form.File["files"]        for _, file := range files {            c.SaveUploadedFile(file, dst+canonicID())        }        c.Writer.WriteHeader(201)    })    router.Run(":3000")}

2.Rust

use actix_multipart::{    form::{        tempfile::{TempFile, TempFileConfig},        MultipartForm,    }};use actix_web::{middleware, web, App, Error, HttpResponse, HttpServer, Responder};use nanoid::nanoid;const BASE_DIR: &str = "/Users/mayankc/Work/source/perfComparisons/uploads/";#[derive(Debug, MultipartForm)]struct UploadForm {    #[multipart(rename = "files")]    files: Vec<TempFile>,}async fn save_files(    MultipartForm(form): MultipartForm<UploadForm>,) -> Result<impl Responder, Error> {    for f in form.files {        let path = format!("{}{}", BASE_DIR, nanoid!());        f.file.persist(path).unwrap();    }    Ok(HttpResponse::Ok())}#[actix_web::main]async fn main() -> std::io::Result<()> {    HttpServer::new(|| {        App::new()            .wrap(middleware::Logger::default())            .app_data(TempFileConfig::default().directory(BASE_DIR))            .service(                web::resource("/upload")                    .route(web::post().to(save_files)),            )    })    .bind(("127.0.0.1", 3000))?    .run()    .await}

Rust代碼已在release mode下編譯。S8228資訊網——每日最新資訊28at.com

三、結果

對10個、50個和100個并發連接執行測試。每個測試總共執行10萬個請求。以下是結果:S8228資訊網——每日最新資訊28at.com

S8228資訊網——每日最新資訊28at.com

S8228資訊網——每日最新資訊28at.com

四、結論

從結果中使用以下公式生成了一個評分表。對于每個測量,獲取獲勝的幅度。如果獲勝幅度為:S8228資訊網——每日最新資訊28at.com

  • < 5%,不給予任何分數
  • 在 5% 和 20% 之間,給予獲勝者 1 分
  • 在 20% 和 50% 之間,給予獲勝者 2 分
  • > 50%,給予獲勝者 3 分

S8228資訊網——每日最新資訊28at.com

S8228資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-31012-0.htmlGo vs Rust:文件上傳性能比較

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Django-simpleui的菜單權限配置,實現無權限不顯示菜單

下一篇: C++ 20類型轉換指南:使用場景與優秀實踐

標簽:
  • 熱門焦點
  • K60 Pro官方停產 第三方瞬間漲價

    雖然沒有官方宣布,但Redmi的一些高管也已經透露了,Redmi K60 Pro已經停產且不會補貨,這一切都是為了即將到來的K60 Ultra鋪路,屬于廠家的正常操作。但有意思的是該機在停產之后
  • 2023年Q2用戶偏好榜:12+256G版本成新主流

    3月份的性能榜、性價比榜和好評榜之后,就要輪到2023年的第二季度偏好榜了,上半年的新機潮已經過去,最明顯的肯定就是大內存和存儲的機型了,另外部分中端機也取消了屏幕塑料支架
  • 印度登月最關鍵一步!月船三號今晚進入環月軌道

    8月5日消息,據印度官方消息,月船三號將于北京時間今晚21時30分左右開始近月制動進入環月軌道。這是該探測器能夠成功的最關鍵步驟之一,如果成功將開始圍
  • 摸魚心法第一章——和配置文件說拜拜

    為了能摸魚我們團隊做了容器化,但是帶來的問題是服務配置文件很麻煩,然后大家在群里進行了“親切友好”的溝通圖片圖片圖片圖片對比就對比,簡單對比下獨立配置中心和k8s作為配
  • 如何使用JavaScript創建一只圖像放大鏡?

    譯者 | 布加迪審校 | 重樓如果您曾經瀏覽過購物網站,可能遇到過圖像放大功能。它可以讓您放大圖像的特定區域,以便瀏覽。結合這個小小的重要功能可以大大改善您網站的用戶體驗
  • 一文掌握 Golang 模糊測試(Fuzz Testing)

    模糊測試(Fuzz Testing)模糊測試(Fuzz Testing)是通過向目標系統提供非預期的輸入并監視異常結果來發現軟件漏洞的方法。可以用來發現應用程序、操作系統和網絡協議等中的漏洞或
  • 新電商三兄弟,“抖快紅”成團!

    來源:價值研究所作 者:Hernanderz 隨著內容電商的概念興起,抖音、快手、小紅書組成的&ldquo;新電商三兄弟&rdquo;成為業內一股不可忽視的勢力,給阿里、京東、拼多多帶去了巨大壓
  • 小米MIX Fold 3下月亮相:今年唯一無短板的全能折疊屏

    這段時間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都有新的進展,其中榮耀、三星都已陸續發布了最新的折疊屏旗艦,尤其號榮耀Magi
  • 回歸OPPO兩年,一加贏了銷量,輸了品牌

    成為OPPO旗下主打性能的先鋒品牌后,一加屢創佳績。今年618期間,一加手機全渠道銷量同比增長362%,憑借一加 11、一加 Ace 2、一加 Ace 2V三款爆品,一加
Top 主站蜘蛛池模板: 宜兴市| 青冈县| 故城县| 太湖县| 泸水县| 天等县| 石屏县| 织金县| 长垣县| 灌阳县| 襄城县| 哈密市| 潞西市| 淮滨县| 安乡县| 城固县| 和田市| 永城市| 宽甸| 瑞安市| 年辖:市辖区| 棋牌| 余姚市| 林口县| 濉溪县| 铜川市| 巴马| 南和县| 阿克| 鹤峰县| 广安市| 荣昌县| 运城市| 交口县| 平顺县| 维西| 大足县| 苗栗县| 江安县| 长海县| 连南|