一文讲解谁才是最快的Web框架

对于Web应用开发者而言,关于不同Web框架之间性能差异的争议由来已久。对于一个网络应用或服务而言,我们通常都希望处理速度越快越好。但由于实现语言、底层网络设计、并发处理、路由算法等种种因素的影响,不同的框架实现相同的逻辑,性能可能会有十倍乃至百倍的差异。

究竟哪个Web框架才是最快的,能够在一定的时间和系统资源内,处理更多的请求?Web-Frameworks,这个项目或许能给出一些有价值的信息。

简介

Web-Frameworks,是the-benchmarker组织在Github上开源的Web框架性能测试比较工具和排行榜。项目使用:

Ruby:用于编写所有工具脚本

wrk:并发性能测试工具

PostgreSQL:测试结果存储的数据库

Docker:每个测试都使用Docker容器进行隔离

jq:处理Docker元数据

Web-Frameworks部署方便,且很容易扩展,可以添加自定义的框架和测试脚本,并提供了丰富的结果输出方式。

使用Web-Frameworks,可以测试在不同硬件环境下框架的性能表现,以及不同框架之间的比较,能够对框架选择和性能评估能提供参考。

使用

要安装Web-Frameworks,使用Ruby的依赖管理工具bundle安装

bundle install
bundle exec rake config12复制代码类型:[javascript]

然后使用Make构建:

export FRAMEWORK=php/lumen
cd ${FRAMEWORK}
make -f .Makefile build123复制代码类型:[javascript]

最后,运行性能测试和数据收集脚本:

make -f ${FRAMEWORK}/.Makefile collect1复制代码类型:[javascript]

截至2021-03-16,Web-Frameworks提供了25种语言、226个Web框架的性能测试比较排行榜。测试运行环境为:

CPU:8核,AMDFX-8320E

内存:16GB

操作系统:Fedora

Docker:version20.10.0-rc1,build5cc2396

使用wrk进行并发性能测试,使用8线程,超时时间为8秒,测试持续15秒,分别在并发为64、256和512并发连接的情况下进行测试。按照64并发下最高qps进行排序,得到了如下的框架性能排名(截取前十名):

排名第一的,是Java框架ActiveJ,一个异步HTTP应用平台,以其高效的IO效率著称。其建立在高性能的事件循环和CSP之上,并提供了GC-友好的资源管理策略。在测试中,其达到了172615.83请求每秒的优越性能。

排名二、三的,是两个PHP框架,Webman和Workerman,其中Webman是基于Workerman的优化版本。而Workerman则是一个异步的、事件驱动的高性能PHPWeb应用框架,配有详尽的中文文档。

第四名则是一个Go框架Gearbox,这是一个用于构建微服务的、专注于高性能的Web框架。其基于另一个Go项目fasthttp,并使用了优化的基数树实现路由算法。

第五名是PHP框架mark,其同样基于排名第三的Workerman。第六到第八名,则是连续的三个Go框架:Fiber,Atreugo和Fasthttp,包括第十名的gorouter-fasthttp均是专注于性能的轻量级Web框架。第九名,则是有一门比较冷门的语言Nim实现的框架httpbeast,充分利用了Nim语言的高性能特性。

十一到二十名,则由4个Java框架、2个Javascript框架,和1个的Go、Clojure、Kotlin以及Kotlin框架组成。

截至2021-03-16,Web-Frameworks提供了全部25种语言、226个Web框架的性能排行榜,绝大多数常见的网络框架都在其中,如:

24名的Vertx,27名的Swoole,47名的Gin,62名的Beego,70名的Spring,155名的Express,191名的Django,209的RubyRails,223的Laravel,……

Web-Frameworks提供了简便的性能测试工具集,并覆盖率极为广泛的网络框架,提供了一个具有参考价值并发性能的排行榜,对于框架选择和性能评估有一定意义。

然而,该测试和排行榜仅仅基于数个简单接口的实现,缺乏更为深入的优化;只对每秒请求数这一指标进行了比较,缺乏包括延迟、并发稳定性、资源占用程度等等的评估,不能完全代表各个框架在实践中的真正性能表现。

(0)

相关推荐

  • Golang哪个Web框架好用?

    作为一个合格的程序员,相信大家对框架并不陌生,那么你知道golang常用的web框架有哪些吗?本文为大家推荐四个常用的框架,希望对你们有所帮助. 第一个:Beego框架 Beego框架是astaxie ...

  • Python有哪些好用的框架?这几个很重要!

    如果你对Python感兴趣,想要学习Python课程,那么今天小编为大家介绍的这篇文章一定要看,也是最不可缺少的知识点,好用的Python开发框架介绍,绝对不能错过哦. 其实大家都知道,Python有 ...

  • Go每日一库之带WebUI的HTTP Benchmark

    Go语言中文网 2021-07-10 以下文章来源于Go招聘 ,作者ironboxboy 今天给大家分享一篇关于HTTP压测工具的短文. 前两天在逛推特,无意中发现一个带有WebUI和终端展示的HTT ...

  • WEB开发框架性能排行与趋势分析2-三大惊喜变化

    WEB开发框架性能排行与趋势分析2-三大惊喜变化 Web框架性能排名 上一次基于TechEmpower的<Web Framework Benchmarks>性能基准测试的解读之后,时隔两年 ...

  • 学习Python哪些框架好用?常见推荐!

    在众多编程语言之中,想必大家都听说过Python语言,不过似乎很多人对于这种语言了解的并不是很深,你知道Python语言是什么吗?Python有哪些框架呢?我们一起来看看. Python是一种跨平台的 ...

  • Python框架有哪些

    python框架有哪些?书声琅琅教育番茄老师介绍,我们知道许多的开发语言都有框架,而对于Python有哪些框架呢,因为开发框架可以大量减少开发者的劳动,提高工作效率,因此我们在Python开发时,很多 ...

  • 陈昌文:关注自己的事情,自己的业务,赚钱才会越来越快。

    陈昌文:关注自己的事情,自己的业务,赚钱才会越来越快。

  • 好好的中药为什么要炮制?净、切、蒸、煮,一文讲解基础炮制方法

    "炮制"是中药加工中非常重要的一环,用对的炮制方法,可以减少某些中药的毒性,也可以改变某些中药的性质,起到更好的治疗疾病的效果. 但是中药炮制技术的传承却不容乐观. 一.为什么中药 ...

  • 家常菜这样做才好吃,快看看做法吧,四道菜谱呢

    香辣土豆块 做法 1.无辜的土豆儿切成小方块,搁锅里一蒸,蒸熟取出 2.起锅热油,下姜蒜末,辣椒面,花椒面爆香,加再点酱油提鲜 3.土豆块丢进锅起,迅速的翻炒,均匀的沾上调味料,就可以起锅啦 金丝虾球 ...

  • 分手后,如何才能够更快的放下对方呢?

    当分手了,我们都想能够更快地放下对方,希望能够更快地走出来.不过,如果真爱过,但分手后,想更快地走出来,却不是那么容易的.分手了,如何才能够更快地放下对方呢? 1.找最好的朋友,一起出去远游一趟.出去 ...

  • 怎么样建站才是最快的?

    答案是使用建站程序建站最快! 现在要建站已经非常方便了,不需要跟以前一样,一个代码一个代码地敲,直接用建站程序,套上一个主题,又快又好看. 目前在国内用得最多的建站程序是wordpress和织梦,wo ...

  • 这些精挑细选的文段太美了,快写到小本本上!

    这些精挑细选的文段太美了,快写到小本本上!

  • 盘点炉石传说贫瘠之地卡牌趣文,谁才是新版本最有趣的卡牌?

    炉石传说作为一款美国出品的游戏,我们能玩到自然少不了本地化团队的努力,炉石本地化团队信达雅的翻译,让我们能够更好的感受炉石的文化与魅力.而最能体现这一点就要属卡牌趣文了,今天就让清风带大家看看贫瘠之地 ...

  • 小小说专栏‖《只收现金》文/章科才

    <只收现金>                   文/章科才  作者简介: 章科才,四川省泸州市机关退休人员,市作协会员.时有作品刊载省市报刊.散文.影视评论,获全国.省征文奖若干次.著有 ...

  • 一文讲解RC电路耦合、相移、滤波、微分、积分...

    所谓RC电路,就是电阻R和电容C组成的一种分压电路.如下图1所示:输入电压加于RC串联电路两端,输出电压取自于电阻R或电容 C.由于电容的特殊性质,对下图 (a)和 (b)不同的输出电压取法,呈现出不 ...