Web框架基准测试

2021-07-13 11:21:06 浏览数 (1)

Web Framework Benchmarks

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

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

在2013年3月的博客文章中,我们发布了比较几个执行简单但有代表性的任务(序列化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

0 人点赞