小白学前端的注意事项(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软件是什么意思(小白学前端的注意事项)的相关内容了,更多精彩内容请关注!

相关内容

热门资讯

这两项智能家电国家标准,明年5... 近日,市场监管总局(国家标准委)批准发布《智能家用电器的智能化技术要求和评价 第1部分:通用要求》(...
日本外务省高官今日访华 据日本广播协会(NHK)报道,日本外务省亚洲大洋洲局局长金井正彰将于今天(11月17日)起访问中国,...
文化和旅游部郑重提醒:中国游客... 外交部11月14日发布出行提醒:今年以来,日本社会治安不靖,针对中国公民违法犯罪案件多发,发生多起在...
80后陆宴辉出任中国热带农业科... 中国热带农业科学院官网日前更新后显示,原任中国农业科学院植物保护研究所所长、党委副书记的陆宴辉已任中...
美国得州一退役发电厂发生大火,... 当地时间11月16日,记者获悉,美国得克萨斯州加尔维斯顿县一座退役发电厂当天清晨发生大规模火灾,巨大...
俄方警告欧盟不得动用或没收其主... 当地时间11月16日,俄罗斯驻比利时使馆在社交媒体平台发文,严厉批评欧盟推动没收俄罗斯被冻结资产的做...
以防长:加沙地带哈马斯武装预计... 以色列国防部长卡茨(资料图)当地时间11月16日,以色列国防部长卡茨在社交媒体上发文称,以军对加沙地...
韩国网络性犯罪数量激增,近半嫌... 韩国警察厅11月16日发布的数据显示,警方过去一年共抓获3000余名涉及网络性犯罪的嫌疑人,同比增加...
祝贺!王曼昱成功卫冕全运会乒乓... 11月16日晚,十五运会乒乓球项目在澳门银河综艺馆展开女单决赛争夺。刚刚,黑龙江队选手王曼昱战胜河北...
“驴友”庐山野游被困获救:追偿... 11月15日,记者从江西省应急管理厅了解到,庐山“9·27”驴友野游救援事件处理有了最新进展,当地政...
惜败!张伟丽不敌舍甫琴科 无缘... 北京时间11月16日中午,在美国纽约进行的UFC(终极格斗冠军赛)322联合主赛中,中国选手张伟丽经...
美联邦官员证实执法人员在夏洛特... 15日,美国联邦官员证实,已加强了在北卡罗来纳州夏洛特市针对非法移民的执法力度。当天,联邦执法人员在...
日本前首相:高市早苗应坚持“无... △日本首相高市早苗(资料图)日本前首相、立宪民主党党首野田佳彦15日说,首相高市早苗应当坚持“无核三...
招商局集团有限公司原副总经理李... 招商局集团有限公司原党委委员、副总经理李百安涉嫌严重违纪违法,目前正接受中央纪委国家监委纪律审查和监...
教育部发布留学预警:中国公民谨... 今日,教育部发布留学预警。近段时间以来,日本社会治安不靖,针对中国公民的违法犯罪案件多发,治安形势和...
南部战区组织轰炸机编队位南海进... 南部战区新闻发言人田军里空军大校表示,11月14日,中国人民解放军南部战区组织轰炸机编队位南海进行例...
高市早苗涉台错误言论引发多方批... 日本首相高市早苗日前在国会答辩时公然发表涉台露骨挑衅言论,暗示可能武力介入台海问题,性质影响极其恶劣...
中国海警舰艇编队11月16日在... 11月16日,中国海警1307舰艇编队在我钓鱼岛领海内巡航。这是中国海警依法开展的维权巡航活动。
御寒“神器”电加热衣走红 专家... 随着入冬气温不断降低,一些具有加热保暖功能的电加热衣也逐渐走红。这到底是一种怎样的御寒神器?记者在网...
全国冬小麦播种过八成 各地抢抓... 农业农村部最新农情调度显示,目前,全国冬小麦播种已过八成。其中黄淮海近八成半。分省看,河南近八成,安...