最近抽空对EJS/Hogan/Jade/Handlebars等几个模板引擎做了些性能对比,下面发出对比结果。
先来说一下测试环境,
同一台机器,同样的环境,页面输出也就是最基础的Hello页面,模板功能中只使用了变量;
测试参数为ab -c 300 -t 10 http://127.0.0.1:5000/
========================= 割 =========================
下面4个结果都是在开发模式下的测试:
EJS:
This is ApacheBench, Version 2.3 <$Revision: 1528965 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient)
Server Software:
Server Hostname: 127.0.0.1
Server Port: 5000
Document Path: /
Document Length: 207 bytes
Concurrency Level: 300
Time taken for tests: 10.001 seconds
Complete requests: 5181
Failed requests: 0
Total transferred: 2015409 bytes
HTML transferred: 1072467 bytes
Requests per second: 518.04 [#/sec] (mean)
Time per request: 579.107 [ms] (mean)
Time per request: 1.930 [ms] (mean, across all concurrent requests)
Transfer rate: 196.79 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 232 832.7 0 7015
Processing: 171 303 65.0 279 704
Waiting: 168 303 65.0 279 704
Total: 188 536 846.8 285 7430
Percentage of the requests served within a certain time (ms)
50% 285
66% 359
75% 378
80% 389
90% 1249
95% 1452
98% 3369
99% 3476
100% 7430 (longest request)
Jade:
This is ApacheBench, Version 2.3 <$Revision: 1528965 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient)
Server Software:
Server Hostname: 127.0.0.1
Server Port: 5000
Document Path: /
Document Length: 170 bytes
Concurrency Level: 300
Time taken for tests: 10.001 seconds
Complete requests: 1740
Failed requests: 0
Total transferred: 612480 bytes
HTML transferred: 295800 bytes
Requests per second: 173.98 [#/sec] (mean)
Time per request: 1724.298 [ms] (mean)
Time per request: 5.748 [ms] (mean, across all concurrent requests)
Transfer rate: 59.81 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 417 677.9 0 3005
Processing: 172 998 231.3 972 3960
Waiting: 170 998 231.3 972 3960
Total: 190 1415 730.5 1109 4959
Percentage of the requests served within a certain time (ms)
50% 1109
66% 1704
75% 1876
80% 1937
90% 2233
95% 2675
98% 3962
99% 4015
100% 4959 (longest request)
Hogan:
This is ApacheBench, Version 2.3 <$Revision: 1528965 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient)
Server Software:
Server Hostname: 127.0.0.1
Server Port: 5000
Document Path: /
Document Length: 206 bytes
Concurrency Level: 300
Time taken for tests: 10.001 seconds
Complete requests: 5213
Failed requests: 0
Total transferred: 2022644 bytes
HTML transferred: 1073878 bytes
Requests per second: 521.25 [#/sec] (mean)
Time per request: 575.536 [ms] (mean)
Time per request: 1.918 [ms] (mean, across all concurrent requests)
Transfer rate: 197.51 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 170 627.3 0 3005
Processing: 167 356 106.2 335 693
Waiting: 164 356 106.2 335 693
Total: 193 527 653.1 353 3685
Percentage of the requests served within a certain time (ms)
50% 353
66% 470
75% 476
80% 479
90% 492
95% 1345
98% 3453
99% 3498
100% 3685 (longest request)
Handlebars:
This is ApacheBench, Version 2.3 <$Revision: 1528965 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient)
Server Software:
Server Hostname: 127.0.0.1
Server Port: 5000
Document Path: /
Document Length: 204 bytes
Concurrency Level: 300
Time taken for tests: 10.061 seconds
Complete requests: 3358
Failed requests: 0
Total transferred: 1296188 bytes
HTML transferred: 685032 bytes
Requests per second: 333.76 [#/sec] (mean)
Time per request: 898.854 [ms] (mean)
Time per request: 2.996 [ms] (mean, across all concurrent requests)
Transfer rate: 125.81 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 61 242.8 0 3001
Processing: 457 790 72.4 801 1044
Waiting: 454 790 72.4 800 1044
Total: 467 852 255.3 803 3806
Percentage of the requests served within a certain time (ms)
50% 803
66% 809
75% 816
80% 821
90% 868
95% 1730
98% 1793
99% 1828
100% 3806 (longest request)
========================= 割 =========================
下面4个结果都是在生产模式下的测试:
EJS:
This is ApacheBench, Version 2.3 <$Revision: 1528965 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient)
Server Software:
Server Hostname: 127.0.0.1
Server Port: 5000
Document Path: /
Document Length: 207 bytes
Concurrency Level: 300
Time taken for tests: 10.001 seconds
Complete requests: 11147
Failed requests: 0
Total transferred: 4336183 bytes
HTML transferred: 2307429 bytes
Requests per second: 1114.64 [#/sec] (mean)
Time per request: 269.144 [ms] (mean)
Time per request: 0.897 [ms] (mean, across all concurrent requests)
Transfer rate: 423.43 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 97 400.7 0 3005
Processing: 104 155 49.4 138 638
Waiting: 104 155 49.4 137 638
Total: 104 252 408.3 144 3642
Percentage of the requests served within a certain time (ms)
50% 144
66% 187
75% 199
80% 224
90% 233
95% 1140
98% 1220
99% 3117
100% 3642 (longest request)
Jade:
This is ApacheBench, Version 2.3 <$Revision: 1528965 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient)
Server Software:
Server Hostname: 127.0.0.1
Server Port: 5000
Document Path: /
Document Length: 170 bytes
Concurrency Level: 300
Time taken for tests: 10.001 seconds
Complete requests: 10023
Failed requests: 0
Total transferred: 3528096 bytes
HTML transferred: 1703910 bytes
Requests per second: 1002.25 [#/sec] (mean)
Time per request: 299.327 [ms] (mean)
Time per request: 0.998 [ms] (mean, across all concurrent requests)
Transfer rate: 344.52 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 51 273.5 0 3005
Processing: 120 243 74.8 250 782
Waiting: 119 242 74.8 250 781
Total: 120 294 279.3 251 3270
Percentage of the requests served within a certain time (ms)
50% 251
66% 253
75% 254
80% 256
90% 277
95% 730
98% 1219
99% 1249
100% 3270 (longest request)
Hogan:
This is ApacheBench, Version 2.3 <$Revision: 1528965 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient)
Server Software:
Server Hostname: 127.0.0.1
Server Port: 5000
Document Path: /
Document Length: 206 bytes
Concurrency Level: 300
Time taken for tests: 10.000 seconds
Complete requests: 11419
Failed requests: 0
Total transferred: 4430572 bytes
HTML transferred: 2352314 bytes
Requests per second: 1141.87 [#/sec] (mean)
Time per request: 262.726 [ms] (mean)
Time per request: 0.876 [ms] (mean, across all concurrent requests)
Transfer rate: 432.66 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 130 376.4 0 3004
Processing: 101 123 32.5 111 919
Waiting: 101 123 32.5 111 918
Total: 101 253 388.8 111 3151
Percentage of the requests served within a certain time (ms)
50% 111
66% 120
75% 128
80% 137
90% 1124
95% 1154
98% 1206
99% 1213
100% 3151 (longest request)
Handlebars:
This is ApacheBench, Version 2.3 <$Revision: 1528965 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient)
Server Software:
Server Hostname: 127.0.0.1
Server Port: 5000
Document Path: /
Document Length: 204 bytes
Concurrency Level: 300
Time taken for tests: 10.000 seconds
Complete requests: 5582
Failed requests: 0
Total transferred: 2154652 bytes
HTML transferred: 1138728 bytes
Requests per second: 558.18 [#/sec] (mean)
Time per request: 537.460 [ms] (mean)
Time per request: 1.792 [ms] (mean, across all concurrent requests)
Transfer rate: 210.41 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 31 171.4 0 1001
Processing: 273 497 45.9 489 701
Waiting: 273 497 45.8 489 700
Total: 273 528 177.8 489 1671
Percentage of the requests served within a certain time (ms)
50% 489
66% 499
75% 520
80% 527
90% 551
95% 589
98% 1454
99% 1500
100% 1671 (longest request)
虽然测试不是很严谨,但起码可以得出一个结论:
开发环境其实可以忽略性能的,所以就不作总结了;
生产环境下,EJS与Hogan差不多,它们比Jade略好,比Handlerbars好很多
本地对比没有包括Swig,Swig的性能据说也不比EJS差的,有兴趣的童鞋可以自己测试下^_^