在汽车世界里,对于指定排量和发动机的车辆想要进一步压榨发动机性能,比较直接的办法就是加装涡轮增压套件,增加发动机进气量从而提升发动机的输出功率。
expressjs作为nodejs中比较热门的http框架被广大用户接受和使用,其性能也一直很受大家关注,我最近开发了两个模块 iroute 和 ifile 模块,可以用来给expreesjs加装涡轮增压器,提升expressjs框架的整体性能。
iroute模块具有简单路由功能
irotue模块项目地址:
https://github.com/DoubleSpout/iroute
介绍地址:
http://cnodejs.org/topic/51ae2043555d34c678a95c95
安装方法:
npm install iroute
ifile模块主要功能是对静态文件的输出
ifile模块项目地址:
https://github.com/DoubleSpout/ifile
介绍地址:
http://cnodejs.org/topic/51c3289573c638f370492f2e
安装方法:
npm install ifile
iroute和ifile模块都具有简单的api,高性能和跨平台特点,都在win8,linux,mac上测试通过,可以说是适合各种工况,欢迎大家下载试用,或者有什么功能特点我没考虑周全的更可以留言给我,不胜感激啊。
最后附上测试结果:
说明:注册get方式的1000个路由,直接get请求第1001个url,静态文件输出为同一个test.js,大小为6kb。
纯exppress
express only(1000 routes)
ab -c 100 -n 20000 http://192.168.28.5:8127/test/
Requests per second: 1271.83 [#/sec] (mean)
ab -c 500 -n 20000 http://192.168.28.5:8127/test/
Requests per second: 1237.43 [#/sec] (mean)
ab -c 800 -n 20000 http://192.168.28.5:8127/test/
Requests per second: 1191.17 [#/sec] (mean)
express only (static)
ab -c 100 -n 20000 http://192.168.28.5:8127/js/test.js
Requests per second: 918.91 [#/sec] (mean)
ab -c 500 -n 20000 http://192.168.28.5:8127/js/test.js
Requests per second: 806.83 [#/sec] (mean)
ab -c 800 -n 20000 http://192.168.28.5:8127/js/test.js
Requests per second: 701.42 [#/sec] (mean)
ab -c 500 -n 20000 -H “Accept-Encoding: gzip” http://192.168.28.5:8127/js/test.js
Requests per second: 596.43 [#/sec] (mean)
express+ifile+iroute
express+ifile+iroute (1000 routes)
ab -c 100 -n 20000 http://192.168.28.5:8128/test/
Requests per second: 1886.01 [#/sec] (mean)
ab -c 500 -n 20000 http://192.168.28.5:8128/test/
Requests per second: 1773.27 [#/sec] (mean)
ab -c 800 -n 20000 http://192.168.28.5:8128/test/
Requests per second: 1829.89 [#/sec] (mean)
express+ifile+iroute (static)
ab -c 100 -n 20000 http://192.168.28.5:8128/js/test.js
Requests per second: 1544.94 [#/sec] (mean)
ab -c 500 -n 20000 http://192.168.28.5:8128/js/test.js
Requests per second: 1655.26 [#/sec] (mean)
ab -c 800 -n 20000 http://192.168.28.5:8128/js/test.js
Requests per second: 1438.74 [#/sec] (mean)
ab -c 500 -n 20000 -H “Accept-Encoding: gzip” http://192.168.28.5:8128/js/test.js
Requests per second: 1591.59 [#/sec] (mean)
路由方面性能提升大约50%,在静态文件输出方面性能提升超过100%,真的是给expressjs框架增加了一个强有力的涡轮增压器了。
最后附上测试代码:
expressjs
var express = require(‘express’);
var connect = require(‘connect’)
var app = express();
app.use(connect.compress());
app.use(‘/js’, express.static(__dirname+’/js’));
var len = 1000;
for(var i=0;i<len;i++){
app.get(‘/user/‘+i+’/info/‘, function(req, res){
res.send(‘hello world2’);
});
}
app.get(‘/test/‘, function(req, res){
res.send(‘test’);
});
app.listen(8127);
expressjs+ifile+iroute
var express = require(‘express’);
var app = express();
var iroute = require(“iroute”);
var ifile = require(“ifile”);
var array = [];
for(var i=0;i<1000;i++){
array.push(["get:/user/"+i+"/info/",function(req,res){res.end('hello world')}])
}
array.push([“get:/test/“,function(req,res){res.end(‘test’)}])
app.use(ifile.connect([[“/js”,__dirname]]));
app.use(iroute.connect(array))
app.listen(8128);