前端js有什么用(程序员js指什么意思),本文通过数据整理汇集了前端js有什么用(程序员js指什么意思)相关信息,下面一起看看。

  计算机编程语言使用FastApi测试;节点。射流研究…使用Fastify锈则使用Actix。

  选择的计算机编程语言和结节框架,是在搜索"最快的某语言api "时得到的最高结果;锈的后台分析软件是一直高度维护的。

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

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

  计算机编程语言

  客户端代码:

   b导入/b请求

  从请求.适配器导入/b http适配器

  从请求。包裹。URL库3。util。重试b导入/b重试

   MAX_RETIES=3

   def create _ retriable _ session():

   s=请求。会话()

  重试次数=重试次数(

   total=MAX_RETIES,

   )

   s.mount(http:fonti//,http适配器(max _ retries=retries))/I/font font

   s.mount(https:/fontfonti//,http适配器(max _ retries=retries))/I/font font

   b返回/b s

   def main():

   s=create _ retriable _ session()

   b对于/b _ in范围(0,5000):

   s。获取(/font font " http://127。0 .0 .1:8000/"/font font)

   /font

  服务器端,使用fastapi:

  从fastapi导入/b FastAPI

   app=FastAPI()

   @app.get(font"/"/fontfont)

  异步定义根():

   b返回/b {/font font " message "/font font:/font font " Hello World "/font font }

   /font

  运行服务器:

   uvicorn main:应用程序

  测试结果:

  每循环5.22秒221毫秒(平均标准时间。戴夫。7次运行,每次一个循环)

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

   b const/b fastify=require( fastify )({ logger:false })

   b成本/b端口=8000;

   fastify.get(/),async(请求,回复)={

   b返回/b {消息:"你好,世界"}

   })

   bconst/b start=async ()={

   b尝试/b {

  等待fastify.listen(端口)

   } b批处理/b(错误){

   fastify.log.error(错误)

   process.exit(1)

   }

   }

  开始()

  再次测试结果:

  每循环4.49秒84.7毫秒(平均标准时间戴夫。7次运行,每次一个循环)

  比较结果:

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

  锈

  使用actix_web:{App,get,HttpResponse,HttpServer,Responder };

   #[get(font"/"/fontfont)]

  异步fn hello() - impl响应器{

   HttpResponse:Ok().body(/font font " { \ \ \ \ " message \ \ \ \ ":\ \ \ \ " Hello World \ \ \ \ " } "/font font)

   }

   #[actix_web:main]

  异步fn main() - std:io:Result() {

   http服务器:b新建/b(

   {

   app:b新建/b()。塞尔维亚快递=要求(快递)

   bconst/b app=express()

   b成本/b端口=8000

   app.get(/,(req,res)={

   RES . JSON({ message:font " Hello World "/font font })

   })

   app.listen(port,()={

   console . log(` o示例应用程序在http:/font font//localhost:$ { port } `)/I/font font

   })

   /font

  测试结果:

  每循环4.88秒152毫秒(平均标准时间。戴夫。7次运行,每次一个循环)生锈

  使用actix_web:{App,get,HttpResponse,HttpServer,Responder };

   #[get(font"/"/fontfont)]

  异步fn hello() - impl响应器{

   HttpResponse:Ok().body(/font font " { \ \ \ \ " message \ \ \ \ ":\ \ \ \ " Hello World \ \ \ \ " } "/font font)

   }

   #[actix_web:main]

  异步fn main() - std:io:Result() {

   http服务器:b新建/b(

   {

   app:b新建/b()。服务(你好)

   })。bind(/font font " 127。0 .0 .1:8000 "/font font)?运行()。等待

   }

   /font

  测试结果:

  每循环4.32秒58.7毫秒(平均标准时间戴夫。7次运行,每次一个循环)

  比较结果:

  我们再次看到,生锈比大蟒快,也比Fastify快,生锈能够每秒处理1157.41个请求,每秒比Fastify快44个请求,比FastApi每秒快200个请求。

  节点。射流研究…

  只是为了好玩,快递是最常见的节点框架,所以我也想测试一下,快递比fastify的功能更全面,所以我估计它也会更慢。

   b const/b express=require(" express ")

   bconst/b app=express()

   b成本/b端口=8000

   app.get(/,(req,res)={

   RES . JSON({ message:font " Hello World "/font font })

   })

   app.listen(port,()={

   console . log(` o示例应用程序在http:/font font//localhost:$ { port } `)/I/font font

   })

   /font

  测试结果:

  每循环4.88秒152毫秒(平均标准时间。戴夫。7次运行,每次一个循环)

  而且确实比fastify要慢。

  结论

  铁锈肯定是最快的选择,但它是最好的吗?我不确定我能不能回答这个问题,因为98%的时候都要看情况。你的团队知道什么?框架有你需要的功能吗?如果没有,能建吗?如果没有专家团队,学起来有多容易?框架在4-5年内存在的可能性有多大?

  这些测试有一些注意事项。它们是用Python运行的,所以只能以Python发出请求的速度运行。此外,它们不是多线程的,所以框架可能不会使用多线程来响应,这取决于Python的请求库中的会话如何工作。另外,一般来说,node是单线程的。node使用队列来伪并发,但是有一个方法可以解决这个问题,就是使用workers。它允许您在不同的线程上运行多个服务器,这取决于CPU有多少逻辑核心。这在生产中非常有用,因为它有巨大的性能提升,但同样,这些测试不能从中受益。

  这篇文章的重点不是把你转移到Actix/Rust的生产服务器上,而是展示一个我在学习新东西时喜欢的简单方法,我希望展示测试并不总是必须严肃或复杂的。

  更多前端js有什么用(程序员js指什么意思)相关信息请关注本站,本文仅仅做为展示!