当前位置: 首页 > wzjs >正文

深圳便宜网站建设产品推广平台

深圳便宜网站建设,产品推广平台,安徽省建设工程质量与安全协会官网,如何创建博客网站在本文中,主要测试并比较了Go—Gin和Rust—Actix之间的多部分文件上传性能。 设置 所有测试都在配备16G内存的 MacBook Pro M1 上执行。 软件版本为: Go v1.20.5Rust v1.70.0 测试工具是一个基于 libcurl 并使用标准线程的自定义工具,能…

img

在本文中,主要测试并比较了Go—Gin和Rust—Actix之间的多部分文件上传性能。

设置

所有测试都在配备16G内存的 MacBook Pro M1 上执行。

软件版本为:

  • Go v1.20.5
  • Rust v1.70.0

测试工具是一个基于 libcurl 并使用标准线程的自定义工具,能够发送多部分请求。

资产目录中有 100,000 个文件。每个文件的大小都是确切的 100K。这些文件数量在测试工作线程之间进行分配。同一个文件不会一遍又一遍地上传。工作线程会循环处理分配给它们的文件。一旦它们处理完所有分配的文件,它们就会回到第一个文件重新开始。

每个请求携带两个文件作为多部分请求体。请求的头部和体部大致如下:

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

代码

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")
}

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下编译。

结果

对10个、50个和100个并发连接执行测试。每个测试总共执行10万个请求。
以下是结果:

img

img

结论

从结果中使用以下公式生成了一个评分表。对于每个测量,获取获胜的幅度。如果获胜幅度为:

  • < 5%,不给予任何分数
  • 在 5% 和 20% 之间,给予获胜者 1 分
  • 在 20% 和 50% 之间,给予获胜者 2 分
  • > 50%,给予获胜者 3 分

img

img

http://www.dtcms.com/wzjs/70701.html

相关文章:

  • 佛山专业做网站公司百度最新人工智能
  • 背景响应式网站开发 css做电商需要什么条件
  • 公司网站设计有基本哪些要求做推广app赚钱的项目
  • 睢宁微网站开发我的百度账号
  • 长春网站建设厂家国内b2b十大平台排名
  • 动态网站设计的基本流程产品市场推广计划书
  • 杭州精品课程网站建设百度信息流推广教程
  • app定制开发谈判技巧山东网络推广优化排名
  • 官方网站弹幕怎么做友情链接的网站有哪些
  • 做旅游网站的公司网站seo方案撰写
  • wordpress向登录页面跳转百度seo教程视频
  • 公安网站服务平台在线视频观看免费视频22
  • 微商城网站建设平台如何做网站推广广告
  • 威海高新园区建设运营有限公司网站网络营销的优缺点
  • 自己做导航网站google推广妙招
  • 推广型网站建设模板网站开发是做什么的
  • 网站空间期限查询天津快速关键词排名
  • 庆阳网站设计费用国外网站设计
  • 怎样提交网站百度收录金城武重庆森林经典台词
  • 网站模板破解版sem优化策略
  • 九江建网站多少钱社交网络的推广方法有哪些
  • 虹桥做网站公司注册域名要钱吗
  • 无锡做网站优化多少钱软文发稿平台
  • 杭州做网站的公司哪些比较好百家号排名
  • 苏州网上注册公司流程最好的网站优化公司
  • 做网站如何挂支付系统百度搜索引擎优化详解
  • 门户网站模板源码百度seo排名培训
  • 网站建设需要哪些的ps如何创建自己的个人网站
  • 徐州网站建设大前端怎么知道网站有没有被收录
  • 如何做好品牌网站建设方案seo 推广怎么做