Web框架基准测试

Web Framework Benchmarks 这是许多执行基本任务(例如JSON序列化,数据库访问和服务器端模板组成)的Web应用程序框架的性能比较。每个框架都在实际的生产配置中运行。结果在云实例和物理硬件上捕获。测试实现主要是由社区贡献的,所有资源都可以从 GitHub存储库中获得 。 注意:我们使用“框架”一词来泛指平台,微框架和全栈框架。 在 2013 年 3月的博客文章中

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)

Rnk Framework Best performance (higher is better) Errors Cls Lng Plt FE Aos IA
1 servlet 560,548 100.0% 0 Plt Jav Svt Res Lin Rea
2 revenj-jvm 554,142 98.9% 0 Ful Jav Svt Res Lin Rea
3 gemini 549,035 97.9% 0 Ful Jav Svt Res Lin Rea
4 ulib-json 535,616 95.6% 0 Plt C++ Non ULi Lin Rea
5 blaze 505,464 90.2% 0 Mcr Sca bla Non Lin Rea
6 grizzly 494,667 88.2% 0 Mcr Jav Svt Grz Lin Rea
7 undertow 490,725 87.5% 0 Plt Jav Utw Non Lin Rea
8 h2o 490,135 87.4% 0 Plt C Non Non Lin Rea
9 vertx-web 466,677 83.3% 0 Mcr Jav vtx Non Lin Rea
10 vertx 461,123 82.3% 0 Plt Jav ver Non Lin Rea
11 openresty 461,002 82.2% 0 Plt Lua OpR ngx Lin Rea
12 colossus 457,534 81.6% 0 Mcr Sca Akk Non Lin Rea
13 tokio-minihttp 449,705 80.2% 0 Mcr Rus Rus tok Lin Rea
14 finatra 441,072 78.7% 0 Mcr Sca Nty Non Lin Rea
15 netty 433,529 77.3% 0 Plt Jav Nty Non Lin Rea
16 falcon 432,895 77.2% 0 Mcr Py Non Mei Lin Rea
17 libreactor 427,211 76.2% 0 Mcr C Non Non Lin Rea
18 cpoll_cppsp 418,258 74.6% 0 Plt C++ Non Non Lin Rea
19 wicket 416,601 74.3% 0 Ful Jav Svt Res Lin Rea
20 finagle 391,735 69.9% 0 Mcr Sca Nty Non Lin Rea
21 cutelyst-thread 389,488 69.5% 0 Ful C++ cut Non Lin Rea
22 nodejs 372,531 66.5% 0 Plt JS njs Non Lin Rea
23 rapidoid-http-fast 372,076 66.4% 0 Plt Jav Rap Non Lin Rea
24 duda 370,911 66.2% 0 Plt C dud Mon Lin Rea
25 fintrospect 370,377 66.1% 0 Mcr Sca Nty Non Lin Rea
26 falcon-py3 362,461 64.7% 0 Mcr Py Non Mei Lin Rea
27 nickel 358,618 64.0% 0 Mcr Rus Rus Hyp Lin Rea
28 jlhttp 344,546 61.5% 0 Plt Jav JLH Non Lin Rea
29 rapidoid 343,704 61.3% 0 Plt Jav Rap Non Lin Rea
30 lapis 343,577 61.3% 0 Ful Lua OpR ngx Lin Rea
31 iron 341,296 60.9% 0 Mcr Rus Rus Hyp Lin Rea
32 jooby 330,810 59.0% 0 Ful Jav Nty Non Lin Rea
33 hyper 326,973 58.3% 0 Mcr Rus Rus Hyp Lin Rea
34 bottle 318,515 56.8% 0 Mcr Py Mei Non Lin Rea
35 fasthttp 302,845 54.0% 0 Plt Go Non Non Lin Rea
36 kami 279,076 49.8% 0 Mcr Go Non Non Lin Rea
37 jetty-servlet 269,874 48.1% 0 Plt Jav Jty Non Lin Rea
38 go 261,448 46.6% 0 Plt Go Non Non Lin Rea
39 weppy-py3 257,196 45.9% 0 Ful Py Mei Non Lin Rea
40 spark 256,662 45.8% 0 Mcr Jav Svt Jty Lin Rea
41 weppy 255,510 45.6% 0 Ful Py Mei Non Lin Rea
42 jetty 250,671 44.7% 0 Plt Jav Jty Non Lin Rea
43 gin 249,839 44.6% 0 Mcr Go Non Non Lin Rea
44 yesod 243,994 43.5% 0 Ful Hkl Wai Wrp Lin Rea
45 play2-scala 240,174 42.8% 0 Ful Sca Akk Non Lin Rea
46 aleph 234,767 41.9% 0 Mcr Clj Nty Non Lin Rea
47 beego 233,105 41.6% 0 Ful Go Non Non Lin Rea
48 falcore 229,208 40.9% 0 Mcr Go Non Non Lin Rea
49 grizzly-jersey 219,894 39.2% 0 Mcr Jav JAX Grz Lin Rea
50 finch 201,447 35.9% 0 Mcr Sca Nty Non Lin Rea
51 express 199,878 35.7% 0 Mcr JS Non Non Lin Rea
52 roda-sequel 193,679 34.6% 0 Mcr Rby Rac Pum Lin Rea
53 roda-sequel-postgres 190,315 34.0% 0 Mcr Rby Rac Pum Lin Rea
54 urweb 183,888 32.8% 0 Ful Ur Ur/ Non Lin Rea
55 activeweb-jackson 176,825 31.5% 0 Ful Jav Svt Non Lin Rea
56 pyramid-py2 172,666 30.8% 0 Ful Py Non Mei Lin Rea
57 phoenix 164,921 29.4% 0 Ful Eli Cow Non Lin Rea
58 pyramid 162,962 29.1% 0 Ful Py Non Mei Lin Rea
59 hexagon 160,371 28.6% 0 Mcr Kot Svt Non Lin Rea
60 servant 156,821 28.0% 0 Mcr Hkl Wai Wrp Lin Rea
61 tapestry 156,479 27.9% 0 Ful Jav Svt Res Lin Rea
62 aiohttp 154,018 27.5% 0 Mcr Py asy Gun Lin Rea
63 koa 152,925 27.3% 0 Mcr JS Non Non Lin Rea
64 undertow-jersey-hikaricp 145,262 25.9% 0 Plt Jav JAX Non Lin Rea
65 revenj 143,516 25.6% 0 Ful C# Non Non Lin Rea
66 bayou 136,675 24.4% 0 Plt Jav Bay Non Lin Rea
67 webgo 130,231 23.2% 0 Mcr Go Non Non Lin Rea
68 sinatra-postgres 118,093 21.1% 0 Mcr Rby Rac Pum Lin Rea
69 curacao 117,926 21.0% 3 Mcr Jav Svt Non Lin Rea
70 sinatra-sequel 117,757 21.0% 0 Mcr Rby Rac Pum Lin Rea
71 sinatra-sequel-postgres 117,258 20.9% 0 Mcr Rby Rac Pum Lin Rea
72 sinatra 116,280 20.7% 0 Mcr Rby Rac Pum Lin Rea
73 echo 114,610 20.4% 0 Mcr Go Non Non Lin Rea
74 play2-scala-slick 114,377 20.4% 0 Ful Sca Akk Non Lin Rea
75 restexpress 112,325 20.0% 0 Mcr Jav Nty Non Lin Rea
76 play2-scala-reactivemongo 109,050 19.5% 0 Ful Sca Akk Non Lin Rea
77 roda-sequel-torquebox-jruby 108,330 19.3% 0 Mcr Rby Rac Tor Lin Rea
78 akka-http 103,453 18.5% 0 Mcr Sca Akk Non Lin Rea
79 compojure 103,222 18.4% 0 Mcr Clj Svt Res Lin Rea
80 roda-sequel-postgres-torquebox-jruby 101,845 18.2% 0 Mcr Rby Rac Tor Lin Rea
81 octopus 101,460 18.1% 0 Ful Lua OpR ngx Lin Rea
82 cutelyst-nginx 98,480 17.6% 0 Ful C++ uWS ngx Lin Rea
83 dropwizard 98,464 17.6% 0 Ful Jav JAX Jty Lin Rea
84 flask 93,373 16.7% 0 Mcr Py Mei Non Lin Rea
85 redstone 93,084 16.6% 0 Mcr Dar Non Non Lin Rea
86 snap 93,005 16.6% 0 Mcr Hkl Non Non Lin Rea
87 turbogears 90,292 16.1% 0 Mcr Py Non Mei Lin Rea
88 api_hour 88,822 15.8% 18 Mcr Py asy Gun Lin Rea
89 django 87,427 15.6% 0 Ful Py Non Mei Lin Rea
90 evhttp-sharp 87,219 15.6% 0 Mcr C# Non Non Lin Rea
91 roda-sequel-passenger-mri 87,052 15.5% 0 Mcr Rby Rac Pas Lin Rea
92 roda-sequel-postgres-passenger-mri 87,019 15.5% 0 Mcr Rby Rac Pas Lin Rea
93 comsat-webactors-undertow 83,980 15.0% 0 Plt Jav Com Non Lin Rea
94 django-py3 83,390 14.9% 0 Ful Py Non Mei Lin Rea
95 goji 83,133 14.8% 0 Mcr Go Non Non Lin Rea
96 http4s 81,717 14.6% 0 Mcr Sca NIO bla Lin Rea
97 luminus 74,709 13.3% 0 Mcr Clj Rin Non Lin Rea
98 cutelyst 69,645 12.4% 0 Ful C++ cut Non Lin Rea
99 sinatra-sequel-passenger-mri 64,468 11.5% 0 Mcr Rby Rac Pas Lin Rea
100 sinatra-sequel-postgres-passenger-mri 64,462 11.5% 0 Mcr Rby Rac Pas Lin Rea
101 sinatra-passenger-mri 63,897 11.4% 0 Mcr Rby Rac Pas Lin Rea
102 sinatra-postgres-passenger-mri 63,839 11.4% 0 Mcr Rby Rac Pas Lin Rea
103 ringojs 62,824 11.2% 0 Plt JS Jty Non Lin Rea
104 jester 60,327 10.8% 0 Mcr Nim Non Non Lin Rea
105 wt 59,541 10.6% 0 Ful C++ Non Non Lin Rea
106 tornado 59,315 10.6% 0 Plt Py Non Tor Lin Rea
107 tornado-py3 55,029 9.8% 0 Plt Py Non Tor Lin Rea
108 http-kit 54,271 9.7% 0 Plt Clj Rin Non Lin Rea
109 activeweb 53,579 9.6% 0 Ful Jav Svt Non Lin Rea
110 php-php5 44,327 7.9% 0 Plt PHP Non ngx Lin Rea
111 web2py-optimized 42,960 7.7% 0 Ful Py Mei Non Lin Rea
112 php 42,308 7.5% 0 Plt PHP Non ngx Lin Rea
113 pedestal 42,045 7.5% 0 Mcr Clj Jty Non Lin Rea
114 grails 37,021 6.6% 0 Ful Grv Svt Non Lin Rea
115 sinatra-sequel-torquebox-jruby 35,547 6.3% 0 Mcr Rby Rac Tor Lin Rea
116 fat-free 34,839 6.2% 0 Ful PHP Non ngx Lin Rea
117 phalcon 34,439 6.1% 0 Ful PHP Non ngx Lin Rea
118 sinatra-sequel-postgres-torquebox-jruby 33,892 6.0% 0 Mcr Rby Rac Tor Lin Rea
119 roda-sequel-postgres-unicorn-mri 33,063 5.9% 0 Mcr Rby Rac Uni Lin Rea
120 roda-sequel-unicorn-mri 32,485 5.8% 0 Mcr Rby Rac Uni Lin Rea
121 sinatra-unicorn-mri 31,550 5.6% 0 Mcr Rby Rac Uni Lin Rea
122 sinatra-postgres-unicorn-mri 31,185 5.6% 0 Mcr Rby Rac Uni Lin Rea
123 sinatra-sequel-postgres-unicorn-mri 30,686 5.5% 0 Mcr Rby Rac Uni Lin Rea
124 sinatra-sequel-unicorn-mri 30,475 5.4% 0 Mcr Rby Rac Uni Lin Rea
125 comsat-servlet-undertow 29,396 5.2% 0 Plt Jav Svt Non Lin Rea
126 ringojs-convenient 26,078 4.7% 0 Mcr JS Rin Non Lin Rea
127 mojolicious 25,595 4.6% 0 Ful Prl Non Hyp Lin Rea
128 rouille 25,095 4.5% 0 Mcr Rus Rus rou Lin Rea
129 ninja-standalone 24,692 4.4% 0 Ful Jav Jty Non Lin Rea
130 spring 22,228 4.0% 0 Ful Jav tom Non Lin Rea
131 slim 21,589 3.9% 0 Mcr PHP Non ngx Lin Rea
132 web2py 20,005 3.6% 0 Ful Py Mei Non Lin Rea
133 tornado-postgresql-raw 19,760 3.5% 0 Plt Py Non Tor Lin Rea
134 revel 18,930 3.4% 0 Ful Go Non Non Lin Rea
135 kemal 12,845 2.3% 0 Ful Cry Non Non Lin Rea
136 web-simple 12,645 2.3% 0 Mcr Prl Plk Sta Lin Rea
137 kelp 12,265 2.2% 0 Ful Prl Plk Sta Lin Rea
138 kelp-mongodb 11,905 2.1% 0 Ful Prl Plk Sta Lin Rea
139 codeigniter 11,824 2.1% 0 Ful PHP Non ngx Lin Rea
140 vibed-ldc 11,813 2.1% 0 Plt D Non Non Lin Rea
141 dancer 11,611 2.1% 0 Ful Prl Plk Sta Lin Rea
142 spock 11,481 2.0% 0 Mcr Hkl Wai Wrp Lin Rea
143 hot 10,627 1.9% 0 Plt Grv Jty Jty Lin Rea
144 yii2 10,388 1.9% 0 Ful PHP Non ngx Lin Rea
145 slim-php5 9,640 1.7% 0 Mcr PHP Non ngx Lin Rea
146 play1 8,706 1.6% 8 Ful Jav Nty Non Lin Rea
147 vibed 8,415 1.5% 0 Mcr D Non Non Lin Rea
148 grape 8,110 1.4% 0 Mcr Rby Rac Pum Lin Rea
149 lumen 8,033 1.4% 0 Mcr PHP Non ngx Lin Rea
150 hhvm 7,317 1.3% 0 Plt PHP Non ngx Lin Rea
151 laravel 7,020 1.3% 0 Ful PHP Non ngx Lin Rea
152 grape-unicorn 7,000 1.2% 0 Mcr Rby Rac Uni Lin Rea
153 fuel 6,945 1.2% 0 Mcr PHP Non ngx Lin Rea
154 lithium 6,811 1.2% 0 Ful PHP Non ngx Lin Rea
155 padrino 6,701 1.2% 0 Mcr Rby Rac Pum Lin Rea
156 padrino-unicorn 6,624 1.2% 0 Mcr Rby Rac Uni Lin Rea
157 hapi 6,225 1.1% 0 Mcr JS Non Non Lin Rea
158 plack 5,153 0.9% 0 Mcr Prl Plk ngx Lin Rea
159 chicagoboss 5,060 0.9% 0 Ful Erl Cow Non Lin Rea
160 weppy-nginx-uwsgi 4,803 0.9% 0 Ful Py uWS ngx Lin Rea
161 bottle-nginx-uwsgi 4,704 0.8% 0 Mcr Py uWS ngx Lin Rea
162 flask-nginx-uwsgi 4,693 0.8% 0 Mcr Py Non ngx Lin Rea
163 zend 4,560 0.8% 0 Ful PHP Non ngx Lin Rea
164 cakephp 4,388 0.8% 0 Ful PHP Non ngx Lin Rea
165 rails-unicorn 4,126 0.7% 0 Ful Rby Rac Uni Lin Rea
166 rails 4,064 0.7% 0 Ful Rby Rac Pum Lin Rea
167 sailsjs 878 0.2% 0 Ful JS njs Non Lin Rea
168 klein 844 0.2% 0 Mcr Py Non Twi Lin Rea
169 cherrypy-py3 473 0.1% 0 Mcr Py Non Non Lin Rea
170 ffead-cpp 400 0.1% 0 Ful C++ ffe ffe Lin Rea
171 ffead-cpp-mysql 400 0.1% 0 Ful C++ ffe ffe Lin Rea
172 ffead-cpp-postgresql 400 0.1% 0 Ful C++ ffe ffe Lin Rea
173 cherrypy 305 0.1% 0 Mcr Py Non Non Lin Rea
174 ffead-cpp-nginx-mongo 17 0.0% 0 Ful C++ ffe ngx Lin Rea
175 ffead-cpp-nginx-mysql 17 0.0% 0 Ful C++ ffe ngx Lin Rea
176 ffead-cpp-nginx-postgresql 17 0.0% 0 Ful C++ ffe ngx Lin Rea
177 jawn Did not complete Ful Jav Svt Utw Lin Rea
178 ktor Did not complete Mcr Kot Nty Non Lin Rea
179 onion Did not complete Plt C Non Non Lin Rea
180 officefloor Did not complete Ful Jav off woo Lin Rea
181 silicon Did not complete Mcr C++ Non mic Lin Rea
182 treefrog Did not complete Ful C++ Non Non Lin Rea
183 treefrog-hybrid Did not complete Ful C++ Non Non Lin Rea
184 treefrog-mongodb Did not complete Ful C++ Non Non Lin Rea
185 treefrog-postgres Did not complete Ful C++ Non Non Lin Rea
186 vapor Did not complete Ful Swi Non Non Lin Rea

 

 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 

 

知秋君
上一篇 2024-07-03 15:31
下一篇 2024-07-03 15:31

相关推荐