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

相关内容

热门资讯

整治“内卷式”竞争 市场监管总... 据市场监管总局网站消息,为加强直播电商监管,综合整治“内卷式”竞争,保护广大消费者和经营者合法权益,...
外交部回应特朗普宣布对14国加... 今日,外交部发言人毛宁主持例行记者会。有记者提问,美国总统特朗普7日表示,将从8月1日起分别对来自日...
苏州中院发布悬赏公告,最高赏金... 江苏省苏州市中级人民法院8日发布悬赏公告,最高赏金超2600万元。内容如下:江苏省苏州市中级人民法院...
国务院办公厅印发《关于健全“高... 日前,国务院办公厅印发《关于健全“高效办成一件事”重点事项常态化推进机制的意见》(以下简称《意见》)...
也门胡塞武装称在红海击沉一艘货... 也门胡塞武装7日宣布,这一组织6日在也门西部荷台达省红海海域打击一艘“违禁”货轮,货轮现已沉没。也门...
死缓!西藏自治区政府原副主席王... 2025年7月8日,湖南省郴州市中级人民法院公开宣判西藏自治区人民政府原党组成员、副主席王勇受贿一案...
第32届世界大学生夏季运动会中... 图源:中国学生体育联合会7月8日,第32届世界大学生夏季运动会中国大学生体育代表团出征仪式在北京召开...
特朗普发关税函后,日韩等国的回... 新华社北京7月8日电 美国总统特朗普7日表示,将从8月1日起分别对来自日本、韩国等14个国家的进口产...
特朗普宣称对14国加税!美股应... 当地时间7日,美国总统特朗普发信函给日韩及南非等14国威胁征税,随后,他又签署行政令,延长“对等关税...
关于巴以问题 特朗普答记者:我... 当地时间7日,美国总统特朗普在华盛顿会见到访的以色列总理内塔尼亚胡。在答记者问时,特朗普将涉及“两国...
天舟八号货运飞船顺利撤离空间站... 天舟八号货运飞船顺利撤离空间站组合体 将于近期择机受控再入大气层。
湖北枣阳:大别山革命老区拼出的... 不沿江、不靠海,地处大别山革命老区,何以成“全国百强县”?降水少,人均水资源占有量只到全国平均水平的...
西藏吉隆口岸泥石流已致我国一侧... 记者从西藏日喀则市吉隆县获悉,8日晨5时许,中国和尼泊尔边境的吉隆口岸一带发生泥石流灾害。经初步统计...
国家发展改革委:我国新增下达1... 记者从国家发展改革委了解到,近日我国新增下达100亿元中央预算内投资,开展以工代赈加力扩围促进重点群...
头晕乏力……当心“热中风”来袭... 大太阳底下,突然感到头晕乏力、精神不振……小心!这可能不是普通中暑,而可能是“热中风”的警报。什么是...
一中国旅行团巴士在新西兰发生侧... 据中国驻克赖斯特彻奇总领馆消息,据新西兰警方通报,7月8日上午,一中国旅行团所乘巴士在新西兰南岛发生...
台风“丹娜丝”将于8日下午到夜... 昨天(7月7日)受今年第4号台风“丹娜丝”影响台湾岛南部和西北部浙江沿海等地出现暴雨或大暴雨浙江台州...
白宫:暂停援乌武器供应系国防部... 当地时间7日,美国白宫表示,暂停对乌克兰武器供应是美国国防部标准审查的一部分。美国白宫和五角大楼1日...
美国白宫:特朗普拟将“对等关税... 新华社纽约7月7日消息,美国白宫新闻发言人卡罗琳·莱维特7日下午在记者会上证实,美国总统特朗普计划签...
天水褐石培心幼儿园铅中毒事件追... 甘肃天水褐石培心幼儿园儿童被检出血铅超标后,多名幼儿园老师经检测,血铅也严重超标。此前,据该幼儿园的...