Web框架基准测试

Web Framework Benchmarks

这是许多执行基本任务(例如JSON序列化,数据库访问和服务器端模板组成)的Web应用程序框架的性能比较。每个框架都在实际的生产配置中运行。结果在云实例和物理硬件上捕获。测试实现主要是由社区贡献的,所有资源都可以从GitHub存储库中获得

注意:我们使用“框架”一词来泛指平台,微框架和全栈框架。

20133月的博客文章中,我们发布了比较几个执行简单但有代表性的任务(序列化JSON对象和查询数据库)的Web应用程序框架的性能的结果。自那时以来,社区的投入一直是巨大的。我们(现在为该项目的所有贡献者发言)一直在定期更新测试实现,扩大覆盖范围并在半定期更新(我们称为“回合”)中获取结果。

https://www.techempower.com/benchmarks/#section=data-r18&hw=ph&test=json

测试代码全平台:

https://github.com/TechEmpower/FrameworkBenchmarks

 

彩图:

 

 

Best JSON responses per second, Dell R440 Xeon Gold + 10 GbE(186 tests)

RnkFrameworkBest performance (higher is better)ErrorsClsLngPltFEAosIA
1servlet560,548100.0%0PltJavSvtResLinRea
2revenj-jvm554,14298.9%0FulJavSvtResLinRea
3gemini549,03597.9%0FulJavSvtResLinRea
4ulib-json535,61695.6%0PltC++NonULiLinRea
5blaze505,46490.2%0McrScablaNonLinRea
6grizzly494,66788.2%0McrJavSvtGrzLinRea
7undertow490,72587.5%0PltJavUtwNonLinRea
8h2o490,13587.4%0PltCNonNonLinRea
9vertx-web466,67783.3%0McrJavvtxNonLinRea
10vertx461,12382.3%0PltJavverNonLinRea
11openresty461,00282.2%0PltLuaOpRngxLinRea
12colossus457,53481.6%0McrScaAkkNonLinRea
13tokio-minihttp449,70580.2%0McrRusRustokLinRea
14finatra441,07278.7%0McrScaNtyNonLinRea
15netty433,52977.3%0PltJavNtyNonLinRea
16falcon432,89577.2%0McrPyNonMeiLinRea
17libreactor427,21176.2%0McrCNonNonLinRea
18cpoll_cppsp418,25874.6%0PltC++NonNonLinRea
19wicket416,60174.3%0FulJavSvtResLinRea
20finagle391,73569.9%0McrScaNtyNonLinRea
21cutelyst-thread389,48869.5%0FulC++cutNonLinRea
22nodejs372,53166.5%0PltJSnjsNonLinRea
23rapidoid-http-fast372,07666.4%0PltJavRapNonLinRea
24duda370,91166.2%0PltCdudMonLinRea
25fintrospect370,37766.1%0McrScaNtyNonLinRea
26falcon-py3362,46164.7%0McrPyNonMeiLinRea
27nickel358,61864.0%0McrRusRusHypLinRea
28jlhttp344,54661.5%0PltJavJLHNonLinRea
29rapidoid343,70461.3%0PltJavRapNonLinRea
30lapis343,57761.3%0FulLuaOpRngxLinRea
31iron341,29660.9%0McrRusRusHypLinRea
32jooby330,81059.0%0FulJavNtyNonLinRea
33hyper326,97358.3%0McrRusRusHypLinRea
34bottle318,51556.8%0McrPyMeiNonLinRea
35fasthttp302,84554.0%0PltGoNonNonLinRea
36kami279,07649.8%0McrGoNonNonLinRea
37jetty-servlet269,87448.1%0PltJavJtyNonLinRea
38go261,44846.6%0PltGoNonNonLinRea
39weppy-py3257,19645.9%0FulPyMeiNonLinRea
40spark256,66245.8%0McrJavSvtJtyLinRea
41weppy255,51045.6%0FulPyMeiNonLinRea
42jetty250,67144.7%0PltJavJtyNonLinRea
43gin249,83944.6%0McrGoNonNonLinRea
44yesod243,99443.5%0FulHklWaiWrpLinRea
45play2-scala240,17442.8%0FulScaAkkNonLinRea
46aleph234,76741.9%0McrCljNtyNonLinRea
47beego233,10541.6%0FulGoNonNonLinRea
48falcore229,20840.9%0McrGoNonNonLinRea
49grizzly-jersey219,89439.2%0McrJavJAXGrzLinRea
50finch201,44735.9%0McrScaNtyNonLinRea
51express199,87835.7%0McrJSNonNonLinRea
52roda-sequel193,67934.6%0McrRbyRacPumLinRea
53roda-sequel-postgres190,31534.0%0McrRbyRacPumLinRea
54urweb183,88832.8%0FulUrUr/NonLinRea
55activeweb-jackson176,82531.5%0FulJavSvtNonLinRea
56pyramid-py2172,66630.8%0FulPyNonMeiLinRea
57phoenix164,92129.4%0FulEliCowNonLinRea
58pyramid162,96229.1%0FulPyNonMeiLinRea
59hexagon160,37128.6%0McrKotSvtNonLinRea
60servant156,82128.0%0McrHklWaiWrpLinRea
61tapestry156,47927.9%0FulJavSvtResLinRea
62aiohttp154,01827.5%0McrPyasyGunLinRea
63koa152,92527.3%0McrJSNonNonLinRea
64undertow-jersey-hikaricp145,26225.9%0PltJavJAXNonLinRea
65revenj143,51625.6%0FulC#NonNonLinRea
66bayou136,67524.4%0PltJavBayNonLinRea
67webgo130,23123.2%0McrGoNonNonLinRea
68sinatra-postgres118,09321.1%0McrRbyRacPumLinRea
69curacao117,92621.0%3McrJavSvtNonLinRea
70sinatra-sequel117,75721.0%0McrRbyRacPumLinRea
71sinatra-sequel-postgres117,25820.9%0McrRbyRacPumLinRea
72sinatra116,28020.7%0McrRbyRacPumLinRea
73echo114,61020.4%0McrGoNonNonLinRea
74play2-scala-slick114,37720.4%0FulScaAkkNonLinRea
75restexpress112,32520.0%0McrJavNtyNonLinRea
76play2-scala-reactivemongo109,05019.5%0FulScaAkkNonLinRea
77roda-sequel-torquebox-jruby108,33019.3%0McrRbyRacTorLinRea
78akka-http103,45318.5%0McrScaAkkNonLinRea
79compojure103,22218.4%0McrCljSvtResLinRea
80roda-sequel-postgres-torquebox-jruby101,84518.2%0McrRbyRacTorLinRea
81octopus101,46018.1%0FulLuaOpRngxLinRea
82cutelyst-nginx98,48017.6%0FulC++uWSngxLinRea
83dropwizard98,46417.6%0FulJavJAXJtyLinRea
84flask93,37316.7%0McrPyMeiNonLinRea
85redstone93,08416.6%0McrDarNonNonLinRea
86snap93,00516.6%0McrHklNonNonLinRea
87turbogears90,29216.1%0McrPyNonMeiLinRea
88api_hour88,82215.8%18McrPyasyGunLinRea
89django87,42715.6%0FulPyNonMeiLinRea
90evhttp-sharp87,21915.6%0McrC#NonNonLinRea
91roda-sequel-passenger-mri87,05215.5%0McrRbyRacPasLinRea
92roda-sequel-postgres-passenger-mri87,01915.5%0McrRbyRacPasLinRea
93comsat-webactors-undertow83,98015.0%0PltJavComNonLinRea
94django-py383,39014.9%0FulPyNonMeiLinRea
95goji83,13314.8%0McrGoNonNonLinRea
96http4s81,71714.6%0McrScaNIOblaLinRea
97luminus74,70913.3%0McrCljRinNonLinRea
98cutelyst69,64512.4%0FulC++cutNonLinRea
99sinatra-sequel-passenger-mri64,46811.5%0McrRbyRacPasLinRea
100sinatra-sequel-postgres-passenger-mri64,46211.5%0McrRbyRacPasLinRea
101sinatra-passenger-mri63,89711.4%0McrRbyRacPasLinRea
102sinatra-postgres-passenger-mri63,83911.4%0McrRbyRacPasLinRea
103ringojs62,82411.2%0PltJSJtyNonLinRea
104jester60,32710.8%0McrNimNonNonLinRea
105wt59,54110.6%0FulC++NonNonLinRea
106tornado59,31510.6%0PltPyNonTorLinRea
107tornado-py355,0299.8%0PltPyNonTorLinRea
108http-kit54,2719.7%0PltCljRinNonLinRea
109activeweb53,5799.6%0FulJavSvtNonLinRea
110php-php544,3277.9%0PltPHPNonngxLinRea
111web2py-optimized42,9607.7%0FulPyMeiNonLinRea
112php42,3087.5%0PltPHPNonngxLinRea
113pedestal42,0457.5%0McrCljJtyNonLinRea
114grails37,0216.6%0FulGrvSvtNonLinRea
115sinatra-sequel-torquebox-jruby35,5476.3%0McrRbyRacTorLinRea
116fat-free34,8396.2%0FulPHPNonngxLinRea
117phalcon34,4396.1%0FulPHPNonngxLinRea
118sinatra-sequel-postgres-torquebox-jruby33,8926.0%0McrRbyRacTorLinRea
119roda-sequel-postgres-unicorn-mri33,0635.9%0McrRbyRacUniLinRea
120roda-sequel-unicorn-mri32,4855.8%0McrRbyRacUniLinRea
121sinatra-unicorn-mri31,5505.6%0McrRbyRacUniLinRea
122sinatra-postgres-unicorn-mri31,1855.6%0McrRbyRacUniLinRea
123sinatra-sequel-postgres-unicorn-mri30,6865.5%0McrRbyRacUniLinRea
124sinatra-sequel-unicorn-mri30,4755.4%0McrRbyRacUniLinRea
125comsat-servlet-undertow29,3965.2%0PltJavSvtNonLinRea
126ringojs-convenient26,0784.7%0McrJSRinNonLinRea
127mojolicious25,5954.6%0FulPrlNonHypLinRea
128rouille25,0954.5%0McrRusRusrouLinRea
129ninja-standalone24,6924.4%0FulJavJtyNonLinRea
130spring22,2284.0%0FulJavtomNonLinRea
131slim21,5893.9%0McrPHPNonngxLinRea
132web2py20,0053.6%0FulPyMeiNonLinRea
133tornado-postgresql-raw19,7603.5%0PltPyNonTorLinRea
134revel18,9303.4%0FulGoNonNonLinRea
135kemal12,8452.3%0FulCryNonNonLinRea
136web-simple12,6452.3%0McrPrlPlkStaLinRea
137kelp12,2652.2%0FulPrlPlkStaLinRea
138kelp-mongodb11,9052.1%0FulPrlPlkStaLinRea
139codeigniter11,8242.1%0FulPHPNonngxLinRea
140vibed-ldc11,8132.1%0PltDNonNonLinRea
141dancer11,6112.1%0FulPrlPlkStaLinRea
142spock11,4812.0%0McrHklWaiWrpLinRea
143hot10,6271.9%0PltGrvJtyJtyLinRea
144yii210,3881.9%0FulPHPNonngxLinRea
145slim-php59,6401.7%0McrPHPNonngxLinRea
146play18,7061.6%8FulJavNtyNonLinRea
147vibed8,4151.5%0McrDNonNonLinRea
148grape8,1101.4%0McrRbyRacPumLinRea
149lumen8,0331.4%0McrPHPNonngxLinRea
150hhvm7,3171.3%0PltPHPNonngxLinRea
151laravel7,0201.3%0FulPHPNonngxLinRea
152grape-unicorn7,0001.2%0McrRbyRacUniLinRea
153fuel6,9451.2%0McrPHPNonngxLinRea
154lithium6,8111.2%0FulPHPNonngxLinRea
155padrino6,7011.2%0McrRbyRacPumLinRea
156padrino-unicorn6,6241.2%0McrRbyRacUniLinRea
157hapi6,2251.1%0McrJSNonNonLinRea
158plack5,1530.9%0McrPrlPlkngxLinRea
159chicagoboss5,0600.9%0FulErlCowNonLinRea
160weppy-nginx-uwsgi4,8030.9%0FulPyuWSngxLinRea
161bottle-nginx-uwsgi4,7040.8%0McrPyuWSngxLinRea
162flask-nginx-uwsgi4,6930.8%0McrPyNonngxLinRea
163zend4,5600.8%0FulPHPNonngxLinRea
164cakephp4,3880.8%0FulPHPNonngxLinRea
165rails-unicorn4,1260.7%0FulRbyRacUniLinRea
166rails4,0640.7%0FulRbyRacPumLinRea
167sailsjs8780.2%0FulJSnjsNonLinRea
168klein8440.2%0McrPyNonTwiLinRea
169cherrypy-py34730.1%0McrPyNonNonLinRea
170ffead-cpp4000.1%0FulC++ffeffeLinRea
171ffead-cpp-mysql4000.1%0FulC++ffeffeLinRea
172ffead-cpp-postgresql4000.1%0FulC++ffeffeLinRea
173cherrypy3050.1%0McrPyNonNonLinRea
174ffead-cpp-nginx-mongo170.0%0FulC++ffengxLinRea
175ffead-cpp-nginx-mysql170.0%0FulC++ffengxLinRea
176ffead-cpp-nginx-postgresql170.0%0FulC++ffengxLinRea
177jawnDid not completeFulJavSvtUtwLinRea
178ktorDid not completeMcrKotNtyNonLinRea
179onionDid not completePltCNonNonLinRea
180officefloorDid not completeFulJavoffwooLinRea
181siliconDid not completeMcrC++NonmicLinRea
182treefrogDid not completeFulC++NonNonLinRea
183treefrog-hybridDid not completeFulC++NonNonLinRea
184treefrog-mongodbDid not completeFulC++NonNonLinRea
185treefrog-postgresDid not completeFulC++NonNonLinRea
186vaporDid not completeFulSwiNonNonLinRea

 

 https://github.com/TechEmpower/FrameworkBenchmarks/wiki/Project-Information-Framework-Tests-Overview

测试类型
每种测试类型都有其自己的要求和规格。请访问他们的部分以获取更多详细信息和完整要求。

JSON序列化:行使框架基础知识,包括保持活动支持,请求路由,请求标头解析,对象实例化,JSON序列化,响应标头生成和请求计数吞吐量。


单个数据库查询:行使框架的对象关系映射器(ORM),随机数生成器,数据库驱动程序和数据库连接池。


多个数据库查询:测试#2的一种变体,也使用World表。提取多行以更加显着地惩罚数据库驱动程序和连接池。在测试的最高每次查询查询数(20)下,该测试表明随着数据库活动的增加,所有框架都趋向于每秒零请求。


Fortunes:练习ORM,数据库连接,动态大小集合,排序,服务器端模板,XSS对策和字符编码。


数据库更新:测试#3的一种变体,它在运行UPDATE语句或类似语句时,测试对象的ORM持久性和数据库驱动程序的性能。该测试的精神是对可变数量的读写样式数据库操作进行练习。


纯文本:仅用于请求路由基础的练习,旨在演示特别是高性能平台的功能。请求将使用HTTP流水线发送。响应有效载荷仍然很小,这意味着要使测试环境的千兆以太网饱和,仍然需要良好的性能。


缓存:对来自数据库的信息进行平台或框架的内存中缓存。为了简化实施,要求与多数据库查询测试(测试#3)非常相似,但是使用单独的数据库表并且相当慷慨/宽容,允许应用每个平台或框架的最佳实践。

参考: 

https://www.zhihu.com/question/66834114/answer/247722267 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值