Web框架基准测试
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
相关文章:

vsftpd用户配置 No.2
在配置ftp虚拟用户的过程中,还有一种配置方式。yum -y install 安装vsftpdcp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak编辑vsftpd.conf开启下列选项:anonymous_enableNOlocal_enableYESwrite_enableYESlocal_umask022anon_mkdir_write_enab…

【MATLAB】稀疏矩阵(含有大量0元素的矩阵)
1、稀疏矩阵的储存方式 对于稀疏矩阵,MATLAB仅储存矩阵所有非零元素的值及其位置(行号和列号)。 2、稀疏矩阵的生成 1)利用sparse函数从满矩阵转换得到稀疏矩阵函数名称表示意义sparse(A)由非零元素和下标建立稀疏矩阵A。如果A已是…

httpTomcat
Tomcat是web应用服务器的一种 转载于:https://juejin.im/post/5beaf7e451882517165d91d1

memcached(二)事件模型源码分析
在memcachedd中,作者为了专注于缓存的设计,使用了libevent来开发事件模型。memcachedd的时间模型同nginx的类似,拥有一个主进行(master)以及多个工作者线程(woker)。 流程图 在memcached中&…

【MATLAB】MATLAB的控制流
1、if-else-end if expressioncommands1 elseif expression2commands2 ... else commandsn end 2、switch-case switch valuecase1 test1%如果value等于test1,执行command1,并结束此结构command1case2 test2command2...case3 testkcommandk otherw…

Linux查看本机端口
查看指定的端口 # lsof -i:port 查看所有端口 # netstat -aptn 安装telnet #yum install -y telnet.x86_64 #telnet ip 端口

Node.js安装
通过nvm安装 下载nvm并执行wget -qO- https://raw.github.com/creationix/nvm/v0.33.11/install.sh | sh将命令输出到终端命令中~/.bashrcexport NVM_DIR"$HOME/.nvm"更新文件source .bashrc通过nvm安装node.jsnvm install 10.13安装的版本是10.13的版本 通过命令查看…

mongodb常用语句以及SpringBoot中使用mongodb
普通查询 某个字段匹配数组内的元素数量的,假如region只有一个元素的 db.getCollection(map).find({region:{$size:1}}) 假如region只有0个元素的 db.getCollection(map).find({region:{$size:0}}) db.getCollection(map).find({region:{$size:1}}).count() db.get…

2002高教社杯---A车灯线光源的优化设计
A题 车灯线光源的优化设计 安装在汽车头部的车灯的形状为一旋转抛物面,车灯的对称轴水平地指向正前方, 其开口半径36毫米,深度21.6毫米。经过车灯的焦点,在与对称轴相垂直的水平方向,对称地放置一定长度的均匀分布的线光源。要求…

从Date类型转为中文字符串
//主方法public static String DateToCh(Date date) {Calendar cal Calendar.getInstance();cal.setTime(date);int year cal.get(Calendar.YEAR);int month cal.get(Calendar.MONTH) 1;int day cal.get(Calendar.DAY_OF_MONTH);return getYear(year) getTenString(month…

第十四课 如何在DAPP应用实现自带钱包转账功能?
1,为什么DAPP生态需要自带钱包功能? 区块链是一个伟大的发明,它改变了生产关系。很多生态,有了区块链技术,可以由全公司员工的"全员合伙人"变成了全平台的”全体合伙人”了,是真正的共享经济模式…

为什么jdk源码推荐ThreadLocal使用static
ThreadLocal是线程私有变量,本身是解决多线程环境线程安全,可以说单线程实际上没必要使用。 既然多线程环境本身不使用static,那么又怎么会线程不安全。所以这个问题本身并不是问题,只是有人没有理解ThreadLocal的真正使用场景&a…

C与C++之间相互调用
1、导出C函数以用于C或C的项目 如果使用C语言编写的DLL,希望从中导出函数给C或C的模块访问,则应使用 __cplusplus 预处理器宏确定正在编译的语言。如果是从C语言模块使用,则用C链接声明这些函数。如果使用此技术并为DLL提供头文件,…
【MATLAB】三维图形的绘制mesh
步骤如下: (1)确定自变量x和y的取值范围和取值间隔 x x1 :dx :x2 , y y1 : dy : y2 (2)构成xoy平面上的自变量采样“格点”矩阵 ①利用格点矩阵的原理生成矩阵。 xx1:dx:x2; yy1:dy:y2; Xones(size(y))*x; Yy*o…

ORA-01919: role 'PLUSTRACE' does not exist
环境:Oracle 10g,11g.现象:在一次迁移测试中,发现有这样的角色赋权会报错不存在: SYSorcl> grant PLUSTRACE to jingyu; grant PLUSTRACE to jingyu* ERROR at line 1: ORA-01919: role PLUSTRACE does not exist 查询发现这个…

Java反射以及应用
需求:需要通过反射动态获取类的字段类型,然后做特殊处理 Java反射getDeclaredField和getField的区别 getDeclaredFiled 只能获取类本身的属性成员(包括私有、共有、保护) getField 仅能获取类(及其父类可以自己测试) public属性…

【MATLAB】雅可比矩阵jacobi matrix
参考页面: https://baike.baidu.com/item/%E9%9B%85%E5%8F%AF%E6%AF%94%E7%9F%A9%E9%98%B5/10753754?fraladdin#1 在向量微积分中,雅可比矩阵是一阶偏导数以一定方式排列成的矩阵,其行列式称为雅可比行列式。 由球坐标系到直角坐标系的转…

Laravel:使用Migrations
1、首先利用artisan创建一个可迁移的数据表模板,该命令运行后会在database/migrations目录下生成一个文件 php artisan make:migration create_fees_count_table --createfees_count 2、生成的文件包含up和down两个方法,其中up中是包含了添加表ÿ…

基于libevent和unix domain socket的本地server
https://www.pacificsimplicity.ca/blog/libevent-echo-server-tutorial 根据这一篇写一个最简单的demo。然后开始写client。 client调优 client最初的代码如下: 1 #include <sys/socket.h>2 #include <sys/un.h>3 #include <stdio.h>4 #include …

软件体系架构模式之一什么是软件架构模式
什么是软件架构模式 计划启动未开发的软件项目?然后选择正确的架构模式将对项目的结果起关键作用。选择市场上最流行或最新的技术并不总是意味着会带来最好的结果。但是,选择最合适的解决方案将为行之有效的问题和反复出现的问题提供可靠的解决方案。 …

HP 服务器 iLO 远程控制软件 介绍
iLO了解:iLO 是一组芯片,内部是vxworks的嵌入操作系统,在服务器的背后有一个标准RJ45口对外连接生产用交换机或者带外管理的交换机。iLO 全名是 Integrated Lights-out,它是惠普某些型号的服务器上集成的远程管理端口,它能够允许用…
【MATLAB】数据分析之数据插值
插值:求过已知有限个数据点的近似函数。 区别于拟合: 拟合:已知有限个数据点求近似函数,不要求过已知数据点,只要求在某种意义下它在这些点上的总偏差最小。 基本常用的插值方法:拉格朗日多项式插值&…

迈斯!啊呸~数学
1.数论 快速幂 int po(int x,int y) {int ans1;while(y){if(y%21)ans1ll*ans*x%p;x1ll*x*x%p;y/2;}return ans; } 乘法逆元(保证模域p与求逆元的数互质) po(a,p-2);//a为需要求逆元的数 扩展欧几里得(exgcd) #include<cstdio&g…

软件体系架构模式之二分层体系结构
分层体系结构模式是n层模式,其中组件被组织在水平层中。这是设计大多数软件的传统方法,并且具有独立性。这意味着所有组件都是互连的,但彼此之间不依赖。 图1:分层架构 在此体系结构中有四层,其中每一层在模块和其中的…

linux下mysql的root密码忘记解决方法
1.首先确认服务器出于安全的状态,最安全的状态是到服务器的Console上面操作,并且拔掉网线,或者可以使用--skip-networking限制只能从本地连接2.修改MySQL的登录设置: # vim /etc/my.cnf在[mysqld]的段中加上…
【Python】turtle库的小应用
心血来潮,哈哈哈,画的不好,请多见谅 大家如果想要尝试turtle库,可以借鉴: https://www.cnblogs.com/nowgood/p/turtle.html 导入库,我的pycharm里可以直接使用,哈哈哈,不行就pip…

[转]MySQL修改时区的方法小结
本文转自:https://www.cnblogs.com/mracale/p/6064447.html 这篇文章主要介绍了MySQL修改时区的方法,总结分析了三种常见的MySQL时区修改技巧,包括命令行模式、配置文件方式及代码方式,需要的朋友可以参考下 方法一:通过mysql命令行模式下动态修改 1.1 查…

swift轮播图代码
import UIKit private let CycleCellID "CycleCellID" class BannerCycleView: UIView { var layout : UICollectionViewFlowLayout! var collectionView :UICollectionView! var pageContol : UIPageControl? var cycleTimer : Timer? let timeInterval : TimeI…

软件体系架构模式之三微内核体系架构
当您的软件系统或产品包含许多与外部实体的集成点时,微内核体系结构模式将非常有用。最重要的是,您将无法准确判断出将来将哪些实体集成到您的系统中。可以将微内核架构模式识别为基于插件的模式。。也称为插件架构模式,它由两个主要组件组成…
【MATLAB】交互式绘图(ginput,gtext,zoom)
1、ginput指令: [x,y]ginput(n) %(其功能是用鼠标从二维图形中获取n个点的数据坐标) x-8*pi:pi/100:8*pi; y1sin(x); y24*sin(x/4); plot(x,y1,r-,x,y2,k-); legend(sin(x),4sin(x/4)); grid on; [x,y]ginput(8); %在下方命令窗…