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

相关内容

热门资讯

中央网信办从严处置一批违规网络... 近期,中央网信办深入推进“清朗·网络娱乐团播乱象整治”专项行动,针对团播违规PK刺激打赏、不当玩法诱...
酷暑如何运动不伤身?养阳、择时... 运动有度:宜舒缓顺势而行夏季,人体阳气浮于体表,腑脏阳气相对亏虚,此时进行马拉松等高强度的剧烈运动,...
解放军报钧声:中方维护黄岩岛主... 7月31日,中国外交部就菲律宾在中国领土黄岩岛划设所谓“领海基线”发布声明。8月1日,中国人民解放军...
查实作弊!河南通报“三支一扶”... 针对近期备受关注的2026年河南省“三支一扶”计划招募相关舆情,河南省“三支一扶”领导小组协调办公室...
美军称对伊朗海上封锁仍在继续 美军中央司令部2日在社交媒体上表示,美国对伊朗的海上封锁仍在继续。截至8月2日,美军已迫使35艘船只...
最高法发布5起典型案例 规范平... 今天(8月3日),最高人民法院发布5起依法规范平台经营、保护消费者合法权益典型案例。平台经济是数字经...
震感明显!四川宜宾高县发生4.... 据中国地震台网正式测定,2026年8月3日2时21分,在四川宜宾市高县(北纬28.54度,东经104...
局地特大暴雨!中央气象台发布暴... 中央气象台8月3日6时发布暴雨橙色预警和强对流天气蓝色预警。暴雨橙色预警预计,8月3日8时至4日8时...
美国波特兰发生枪击事件 致1死... 央视记者获悉,当地时间8月2日凌晨,美国俄勒冈州波特兰一处住宅发生大规模枪击事件,造成包括一名青少年...
广西灵山县一公司在建楼发生火灾... 2026年8月2日12时许,广西钦州灵山县十里工业园区园园丰食品有限公司一在建楼发生火灾,接报后,灵...
西南、华南等地有强降水 国家防... 8月2日上午,国家防总办公室、应急管理部组织中国气象局、水利部、自然资源部、工业和信息化部、住房城乡...
“欧佩克+”主要产油国宣布9月... 当地时间8月2日,石油输出国组织(欧佩克)发布声明称,沙特阿拉伯、俄罗斯、伊拉克、科威特、哈萨克斯坦...
国家外汇局:将继续稳步扩大外汇... 记者8月2日从国家外汇管理局获悉,今年下半年,外汇管理部门将继续稳步扩大外汇领域制度型开放。国家外汇...
解放军报钧声:中方加强黄岩岛管... 近期,菲律宾在中国领土黄岩岛划设所谓“领海基线”,妄图为2016年那场非法仲裁“续命”,并掀起新一轮...
驻日美军多名士兵涉嫌酒驾和猥亵... 日本冲绳县近日发生多起驻日美军士兵被捕案件,其中两人涉嫌酒驾,一人涉嫌公然猥亵。据冲绳县警方通报,2...
伊朗称重开霍尔木兹海峡计划纯属... 据伊朗方面2日消息,有消息人士称,重开霍尔木兹海峡的计划纯属谣言。一名相关消息人士说,目前尚未就重开...
中东部高温闷热持续 热带低压或... 今天,本轮中东部高温闷热天气持续,多地继续“全天桑拿”模式,动不动就大汗淋漓,户外仿佛大蒸笼,走出空...
看完《八仙!》,来这里“沉浸式... 最近,动画电影《八仙!》热映影片中青绿山水间的蓬莱仙境让无数观众心驰神往而真实的蓬莱比电影里还要“仙...
水利部针对重庆市启动洪水防御Ⅳ... 据预报,8月2日至4日,重庆将有中到大雨,其中重庆中部和东南部将有暴雨,局部将有大暴雨;长江上游干流...
巴基斯坦雪崩致1名中国公民失联... 7月30日,一支国际登山队在喀喇昆仑山脉布洛阿特峰遭遇雪崩后失联。8月1日,中国驻巴基斯坦大使馆领侨...