AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁(yè) > 科技  > 軟件

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

來(lái)源: 責(zé)編: 時(shí)間:2023-11-20 08:58:07 325觀看
導(dǎo)讀在本文中,主要測(cè)試并比較了Go—Gin和Rust—Actix之間的多部分文件上傳性能。一、設(shè)置所有測(cè)試都在配備16G內(nèi)存的 MacBook Pro M1 上執(zhí)行。軟件版本為:Go v1.20.5Rust v1.70.0測(cè)試工具是一個(gè)基于 libcurl 并使用標(biāo)準(zhǔn)線程

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

bvv28資訊網(wǎng)——每日最新資訊28at.com

一、設(shè)置

所有測(cè)試都在配備16G內(nèi)存的 MacBook Pro M1 上執(zhí)行。bvv28資訊網(wǎng)——每日最新資訊28at.com

軟件版本為:bvv28資訊網(wǎng)——每日最新資訊28at.com

  • Go v1.20.5
  • Rust v1.70.0

測(cè)試工具是一個(gè)基于 libcurl 并使用標(biāo)準(zhǔn)線程的自定義工具,能夠發(fā)送多部分請(qǐng)求。bvv28資訊網(wǎng)——每日最新資訊28at.com

資產(chǎn)目錄中有 100,000 個(gè)文件。每個(gè)文件的大小都是確切的 100K。這些文件數(shù)量在測(cè)試工作線程之間進(jìn)行分配。同一個(gè)文件不會(huì)一遍又一遍地上傳。工作線程會(huì)循環(huán)處理分配給它們的文件。一旦它們處理完所有分配的文件,它們就會(huì)回到第一個(gè)文件重新開(kāi)始。bvv28資訊網(wǎng)——每日最新資訊28at.com

每個(gè)請(qǐng)求攜帶兩個(gè)文件作為多部分請(qǐng)求體。請(qǐng)求的頭部和體部大致如下:bvv28資訊網(wǎng)——每日最新資訊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下編譯。bvv28資訊網(wǎng)——每日最新資訊28at.com

三、結(jié)果

對(duì)10個(gè)、50個(gè)和100個(gè)并發(fā)連接執(zhí)行測(cè)試。每個(gè)測(cè)試總共執(zhí)行10萬(wàn)個(gè)請(qǐng)求。以下是結(jié)果:bvv28資訊網(wǎng)——每日最新資訊28at.com

bvv28資訊網(wǎng)——每日最新資訊28at.com

bvv28資訊網(wǎng)——每日最新資訊28at.com

四、結(jié)論

從結(jié)果中使用以下公式生成了一個(gè)評(píng)分表。對(duì)于每個(gè)測(cè)量,獲取獲勝的幅度。如果獲勝幅度為:bvv28資訊網(wǎng)——每日最新資訊28at.com

  • < 5%,不給予任何分?jǐn)?shù)
  • 在 5% 和 20% 之間,給予獲勝者 1 分
  • 在 20% 和 50% 之間,給予獲勝者 2 分
  • > 50%,給予獲勝者 3 分

bvv28資訊網(wǎng)——每日最新資訊28at.com

bvv28資訊網(wǎng)——每日最新資訊28at.com

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

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: Django-simpleui的菜單權(quán)限配置,實(shí)現(xiàn)無(wú)權(quán)限不顯示菜單

下一篇: C++ 20類(lèi)型轉(zhuǎn)換指南:使用場(chǎng)景與優(yōu)秀實(shí)踐

標(biāo)簽:
  • 熱門(mén)焦點(diǎn)
  • 量化指標(biāo)是與非:挽救被量化指標(biāo)扼殺的技術(shù)團(tuán)隊(duì)

    作者 | 劉新翠整理 | 徐杰承本文整理自快狗打車(chē)技術(shù)總監(jiān)劉新翠在WOT2023大會(huì)上的主題分享,更多精彩內(nèi)容及現(xiàn)場(chǎng)PPT,請(qǐng)關(guān)注51CTO技術(shù)棧公眾號(hào),發(fā)消息【W(wǎng)OT2023PPT】即可直接領(lǐng)取
  • 讓我們一起聊聊文件的操作

    文件【1】文件是什么?文件是保存數(shù)據(jù)的地方,是數(shù)據(jù)源的一種,比如大家經(jīng)常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數(shù)據(jù),它既可以保
  • 自動(dòng)化在DevOps中的力量:簡(jiǎn)化軟件開(kāi)發(fā)和交付

    自動(dòng)化在DevOps中扮演著重要角色,它提升了DevOps的效能。通過(guò)自動(dòng)化工具和方法,DevOps團(tuán)隊(duì)可以實(shí)現(xiàn)以下目標(biāo):消除手動(dòng)和重復(fù)性任務(wù)。簡(jiǎn)化流程。在整個(gè)軟件開(kāi)發(fā)生命周期中實(shí)現(xiàn)更
  • 零售大模型“干中學(xué)”,攀爬數(shù)字化珠峰

    文/侯煜編輯/cc來(lái)源/華爾街科技眼對(duì)于絕大多數(shù)登山愛(ài)好者而言,攀爬珠穆朗瑪峰可謂終極目標(biāo)。攀登珠峰的商業(yè)路線有兩條,一是尼泊爾境內(nèi)的南坡路線,一是中國(guó)境內(nèi)的北坡路線。相
  • 騰訊蓋樓,字節(jié)拆墻

    來(lái)源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之&ldquo;想重溫暴刷深淵、30+技能搭配暴搓到爽的游戲體驗(yàn)嗎?一起上晶核,即刻暴打!&rdquo;曾憑借直播騰訊旗下代理格斗游戲《DNF》一
  • 新電商三兄弟,“抖快紅”成團(tuán)!

    來(lái)源:價(jià)值研究所作 者:Hernanderz 隨著內(nèi)容電商的概念興起,抖音、快手、小紅書(shū)組成的&ldquo;新電商三兄弟&rdquo;成為業(yè)內(nèi)一股不可忽視的勢(shì)力,給阿里、京東、拼多多帶去了巨大壓
  • 大廠卷向扁平化

    來(lái)源:新熵作者丨南枝 編輯丨月見(jiàn)大廠職級(jí)不香了。俗話說(shuō),兵無(wú)常勢(shì),水無(wú)常形,互聯(lián)網(wǎng)企業(yè)調(diào)整職級(jí)體系并不稀奇。7月13日,淘寶天貓集團(tuán)啟動(dòng)了近年來(lái)最大的人力制度改革,目前已形成一
  • 小米MIX Fold 3下月亮相:今年唯一無(wú)短板的全能折疊屏

    這段時(shí)間以來(lái),包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都有新的進(jìn)展,其中榮耀、三星都已陸續(xù)發(fā)布了最新的折疊屏旗艦,尤其號(hào)榮耀Magi
  • AI芯片初創(chuàng)公司Tenstorrent獲三星和現(xiàn)代1億美元投資

    Tenstorrent是一家由芯片行業(yè)資深人士Jim Keller領(lǐng)導(dǎo)的加拿大初創(chuàng)公司,專(zhuān)注于開(kāi)發(fā)人工智能芯片,該公司周三表示,已經(jīng)從現(xiàn)代汽車(chē)集團(tuán)和三星投資基金等
Top