use actix_web::{App, get, HttpResponse, HttpServer, Responder};
#[get(<font>”/”</font><font>)]
async fn hello() -> impl Responder {
HttpResponse::Ok().body(</font><font>”{\\\\\\\\”message\\\\\\\\”: \\\\\\\\”Hello World\\\\\\\\”}”</font><font>)
}
#[actix_web::main]
async fn main() -> std::io::Result<()> {
HttpServer::<b>new</b>(|| {
App::<b>new</b>()
.service(hello)
})
.bind(</font><font>”127.0.0.1:8000″</font><font>)?
.run()
.await
}
</font>
测试结果:
4.32 s ± 58.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
比较结果:
我们再次看到,Rust比python快,也比Fastify快,Rust能够每秒处理1157.41个请求,每秒比Fastify快44个请求,比FastApi每秒快200个请求 。
Node.js
只是为了好玩,Express是最常见的节点框架,所以我也想测试一下,Express比fastify的功能更全面,所以我估计它也会更慢 。
<b>const</b> express = require(‘express’)
<b>const</b> app = express()
<b>const</b> port = 8000
app.get(‘/’, (req, res) => {
res.json({message: <font>”Hello World”</font><font>})
})
app.listen(port, () => {
console.log(`Example app listening at http:</font><font><i>//localhost:${port}`)</i></font><font>
})
</font>
测试结果:
4.88 s ± 152 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
而且确实比fastify要慢 。
结论
Rust绝对是最快的选择,但它是最好的吗?我不确定我是否能回答这个问题,因为98%的情况下这要取决于 。你的团队知道什么?该框架有你需要的功能吗?如果没有,你能建立它吗?如果你没有一个专家团队,学习起来有多容易?该框架在4-5年内存在的可能性有多大?
这些测试有一些注意事项,它们是在Python中运行的,所以它们只能以Python发出请求的速度运行,而且它们不是多线程的,所以框架也可能不会使用多线程来响应,这取决于Python请求库中的会话工作方式 。另外,一般来说,node是单线程的,node用队列来伪造并发,但是有一种方法可以解决这个问题,那就是用workers,它允许你在不同的线程上运行多个服务器,这取决于CPU有多少逻辑核心,这在生产中非常有用,因为它有巨大的性能提升,但同样,这些测试不能从中受益 。
这篇文章的重点不是让你转到Actix/Rust的生产服务器上,重点是展示我在学习新东西时喜欢的一种简单的方法,并希望展示测试并不总是要严肃或复杂 。
- 搜索软件哪个好 比百度好用的搜索软件推荐
- 女人梦见蛇是什么预兆还被咬了腿 女人梦到被蛇咬腿
- 五笔学习软件哪个好 五笔软件常见功能介绍汇总
- 电脑版ktv点歌软件有哪些 可以投屏的ktv软件介绍
- 手机视频压缩软件免费版 真正免费的视频压缩软件推荐
- 陆域吹填是什么意思 什么叫吹填
- 4.19是什么意思 4.19是什么星座的啊
- 梦到死人是什么预兆解梦 梦见死人是什么预兆?
- 男人梦到掉牙齿是什么意思啊 男人做梦梦见牙齿掉了是什么意思
- 自动写文章软件有哪些 适合新手的写小说软件