小白学前端的注意事项(js软件是什么意思)
admin
2023-09-14 15:04:39
0

Python使用FastApi测试;Node.JS使用Fastify;Rust则使用Actix。

选择的Python和Node框架,是在搜索 “最快的<某语言>api “时得到的最高结果;Rust的Actix是一直高度维护的。

测试的基础很简单;在我的MacBook Pro M1上,每个框架处理来自网络服务器的5000个基本 “Hello, World “响应需要多长时间?

我用来运行测试的代码非常简单,显然,我们只关心速度:

Python

客户端代码:

import requests

from requests.adapters import HTTPAdapter

from requests.packages.urllib3.util.retry import Retry

MAX_RETIES = 3

def create_retriable_session():

s = requests.Session()

retries = Retry(

total=MAX_RETIES,

)

s.mount(‘http://’, HTTPAdapter(max_retries=retries))

s.mount(‘https://’, HTTPAdapter(max_retries=retries))

return s

def main():

s = create_retriable_session()

for _ in range(0, 5000):

s.get(”http://127.0.0.1:8000/”)

服务器端,使用fastapi:

from fastapi import FastAPI

app = FastAPI()

@app.get(”/”)

async def root():

return {”message”: ”Hello World”}

运行服务器:

uvicorn main:app

测试结果:

5.22 s ± 221 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

下面是使用另外一个框架Fastfy使用 异步 后的代码:

const fastify = require(‘fastify’)({logger: false})

const PORT = 8000;

fastify.get(‘/’, async (request, reply) => {

return {message: ‘Hello World’}

})

const start = async () => {

try {

await fastify.listen(PORT)

} catch (err) {

fastify.log.error(err)

process.exit(1)

}

}

start()

再次测试结果:

4.49 s ± 84.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

比较结果:

FastApi每秒处理约957.85次,Fastfy每秒处理1113.59次。

Rust

use actix_web::{App, get, HttpResponse, HttpServer, Responder};

#[get(”/”)]

async fn hello() -> impl Responder {

HttpResponse::Ok().body(”{\”message\”: \”Hello World\”}”)

}

#[actix_web::main]

async fn main() -> std::io::Result<()> {

HttpServer::new(|| {

App::new()

.serb> express = require(‘express’)

const app = express()

const port = 8000

app.get(‘/’, (req, res) => {

res.json({message: ”Hello World”})

})

app.listen(port, () => {

console.log(`Example app listening at http://localhost:${port}`)

})

测试结果:

4.88 s ± 152 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)Rust

use actix_web::{App, get, HttpResponse, HttpServer, Responder};

#[get(”/”)]

async fn hello() -> impl Responder {

HttpResponse::Ok().body(”{\”message\”: \”Hello World\”}”)

}

#[actix_web::main]

async fn main() -> std::io::Result<()> {

HttpServer::new(|| {

App::new()

.service(hello)

})

.bind(”127.0.0.1:8000″)?

.run()

.await

}

测试结果:

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的功能更全面,所以我估计它也会更慢。

const express = require(‘express’)

const app = express()

const port = 8000

app.get(‘/’, (req, res) => {

res.json({message: ”Hello World”})

})

app.listen(port, () => {

console.log(`Example app listening at http://localhost:${port}`)

})

测试结果:

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的生产服务器上,重点是展示我在学习新东西时喜欢的一种简单的方法,并希望展示测试并不总是要严肃或复杂。

以上就是js软件是什么意思(小白学前端的注意事项)的相关内容了,更多精彩内容请关注!

相关内容

热门资讯

三部门:卖房后1年内重新买房 ... 日前,财政部、税务总局、住房城乡建设部联合发布《关于延续实施支持居民换购住房有关个人所得税政策的公告...
中国海警舰艇编队1月14日在我... 1月14日,中国海警1306舰艇编队在我钓鱼岛领海内巡航。这是中国海警依法开展的维权巡航活动。
格陵兰岛各政党领导人:格陵兰人... 原标题:美国欲夺取格陵兰岛暴露霸权思维,格陵兰岛各政党领导人发表声明——“格陵兰人不想成为美国人”(...
全国大部维持晴朗干燥模式 东北... 今明两天(1月14日至15日),全国大部继续维持雨雪稀少的格局,后天起降水将呈现增多趋势。目前,冷空...
美国放宽对英伟达H200芯片出... 当地时间1月13日,据美国联邦公报显示,美国放宽了对英伟达H200芯片出口到中国的监管规定。此前,美...
关系育儿补贴申领、新房购置……... 国务院办公厅12日对外发布《“高效办成一件事”2026年度第一批重点事项清单》,包含个人和经营主体事...
内蒙古通报小学校服薄膜调查结果 1月13日,喀喇沁融媒体微信公号发布《关于网民反映锦山第三小学校服有关情况的通报》,内容如下:202...
澳大利亚驻美大使陆克文将提前离... 澳大利亚总理阿尔巴尼斯13日表示,澳大利亚驻美大使凯文·拉德(中文名陆克文)将于3月底离任,比原定任...
我国将大力推广加厚高强度地膜和... 在国务院新闻办今天举行的国务院政策例行吹风会上,农业农村部相关负责人介绍,在农业农村领域,我国将通过...
美官员称特朗普正寻求通过外交途... 央视记者获悉,美国官员当地时间1月12日称,美国总统特朗普正在寻求通过外交途径应对伊朗局势的可能性,...
日本三重县确认一起高致病性禽流... △资料图日本三重县政府当地时间13日通报称,该县津市确认一起高致病性禽流感病例。这是本季日本全国第1...
受贿数额特别巨大 江苏省南京市... 记者今天(13日)从最高人民检察院获悉,江苏省南京市人大常委会原党组书记、主任龙翔涉嫌贪污、受贿、滥...
美国国务院要求美国公民立即离开... 据美国媒体12日报道,美国国务院要求美国公民立即离开伊朗。
查获作案工具及嫌疑人DNA 调... 当地时间1月12日,根据调查人员透露的消息,警方曾发现一处隐藏的作案工具库,这一发现表明卢浮宫盗抢案...
地缘政治动荡推动黄金、白银价格... 美联储独立性受到挑战和中东地区地缘政治局势动荡,推动避险需求涌入贵金属市场。纽约商品交易所2月黄金期...
特朗普:对伊朗所有的贸易伙伴征... △美国总统特朗普(资料图)当地时间1月12日,美国总统唐纳德·特朗普在其社交媒体“真实社交”发文称,...
闫学晶致歉、中戏澄清,“新疆班... 近日,演员闫学晶因直播“哭穷”引发争议。事后,她连夜道歉,反思自己“环境变了,听着掌声、捧着鲜花,慢...
巴基斯坦开伯尔-普什图省发生爆... 总台记者获悉,当地时间1月12日,巴基斯坦开伯尔-普什图省发生一起爆炸事件,造成6名警察死亡。
遇到心搏骤停者,你会心肺复苏和... 心搏骤停,是指由于各种原因导致的心脏搏动突然停止,瞬间丧失了收缩、舒张功能,导致以脑为代表的全身组织...
济南城市发展集团有限公司党委副... 据济南市纪委监委消息:济南城市发展集团有限公司党委副书记、董事胡娟涉嫌严重违纪违法,目前正接受济南市...