当前位置: 移动技术网 > IT编程>软件设计>架构 > WEB开发框架性能基准测试解读与趋势分析

WEB开发框架性能基准测试解读与趋势分析

2019年03月09日  | 移动技术网IT编程  | 我要评论
WEB开发框架性能基准测试解读与趋势分析 TechEmpower的《Web Framework Benchmarks》性能基准测试,是关注Web开发框架发展的重要途径。但是内容数据众多,每次看都耗费大量时间。这是根据Round17(2018-10-30)测试结果做的整理笔记,以及结合多轮结果做的趋势 ...

web开发框架性能基准测试解读与趋势分析

  

techempower的《web framework benchmarks》性能基准测试,是关注web开发框架发展的重要途径。但是内容数据众多,每次看都耗费大量时间。这是根据round17(2018-10-30)测试结果做的整理笔记,以及结合多轮结果做的趋势分析。

 

web框架性能排名

首先,根据开发为出发点,排除了纯服务器和orm不完善的框架。每种语言也仅仅选择了一两种性能靠前,比较知名的框架。专门的resty框架,也由于差异较大,没有收录。所得的框架性能排名如下:

 

 

1、主流语言的异步框架

由于web开发的标杆语言java的标志性框架spring,在springboot2.0框架中推出了webflux异步核心。全面标志着web开发已经由大服务器与容器时代,转向了异步时代。而servlet技术所代表的容器技术,已经成了备选。

 

 

此次,入选第一集团的所有框架都是异步框架。且都有着不输于c++的性能表现。比如这次夺冠的是rust语言框架actix,有着纯服务器50%以上的性能,比较让人惊喜。需要说明的是此次数据中没有出现springboot,不过根据网上vertx+springboot的实际性能测试表现《spring boot同步架构与vert.x异步架构高并发性能对比》,把springboot加入了排名。

 

2、新兴语言的异步框架

此次,排名第二集团的所有框架,都是新兴语言。令人诧异的是golang的框架表现不佳。这可能和golang的社区热度不高有关。影响了相关框架的开发迭代速度,导致成熟度不高。golang中性能最好的iris框架此次没有参评,不然性能还是有提升空间的。然后,此次没有收录的swift语言vapor框架也是值得关注的。

 

3、脚本语言的异步框架

脚本语言由于其原理限制,性能不能和主流语言比较,已经是非常好的表现了。

 

4、主流语言的传统框架

以java语言servlet容器技术为代表的传统框架,由于不同技术的层层包裹之下,其性能已经被异步框架远远抛下。此次spring框架7.3%的性能还是有点偏低的,实际表现应该会更好。

 

5、脚本语言的传统框架

以ruby和python语言为代表的web开发脚本语言,是表现比较稳定的框架。其提升空间也不会太大。

 

6、php语言的传统框架

由于php语言的原理限制,对php的性能影响最大的还是其使用方式,不恰当的设计会使程序性能急剧下降,所以哪怕php的实际性能并不低的情况下,其框架和程序的表现只能用糟糕来形容。实际使用中,python和php两个功能基本相似的程序,性能相差5倍以上很常见。所以,对于php大家还是谨慎选择。

 

web框架发展趋势分析

有人说,异步框架就是把单线程变成了多线程,每个任务并没有变化。这种观点是不正确的。异步框架之所以有着近5倍的巨大性能提升,主要得益于开源。开源使得原来由异步核心+web服务器+servlet容器+jsp+web框架等许许多多软件配合的事情,变成由一个框架来提供,中间节省了巨大的空间和时间开销。所以web框架的发展方向是偏平化,逐步会淘汰中间环节,变成大一统框架。一如spring框架的演变过程。

另一方面,脚本语言原本生态上就是以开源为根基,框架融合带来的性能提升并没有主流语言那么大。脚本语言的开发地位会发生动摇。毕竟如果主流语言的性能有10到20倍提升,那么脚本语言的开发速度就不再是关注重点。

最后,我们可以看到,随着前端框架的发展,数据与页面分离成为常态。摧生了大量的resty框架。revenj-jvm的性能甚至达到了70.5%。而且,可以预见的,resty框架会迅速向graphql为代表的查询语言框架演进。web框架将会变得越来越快,越来越薄。

 

附表

1、主流语言的异步框架
actix+diesel(rust)
vert.x+springboot(java)
actframework(java)
aspcore+kestrel(.net)
silicon web(c++)
2、新兴语言的异步框架
amber(crystal)
ktor(kotlin)
gin(golang)
echo(golang)
3、脚本语言的异步框架
lapis(lua)
koa(node.js)
express(node.js)
4、主流语言的传统框架
springboot+springmvc(java)
5、脚本语言的传统框架
sinatra+sequel(ruby)
django(python)
flask+sqlalchemy(python)
6、php语言的传统框架
codeigniter(php)
laravel(php)

 

(完)

 

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网