@Jason are you profiling a real-world application? with database interaction etc, or just hello-world fun?
If you have a mission-critical end-point that is extremely hot you're best to just go with straight-up node and no (or very specific) routing. Like I said though it's not like I'm against optimizing Express, but you need to pick and choose parts of the code that are actually relevant On Saturday, 28 April 2012 09:40:39 UTC-7, Jason.桂林 wrote: > > under my test, routing is not only 5%. I will show my benchmark soon. > > 2012/4/28 tjholowaychuk <[email protected]> > >> I can personally guarantee you routing will be less than 5% of your >> bottleneck, focus on real-world problems, and profile first >> >> On Friday, 27 April 2012 10:39:57 UTC-7, Jason.桂林 wrote: >>> >>> I tested that express is a little slower then non-express code. I >>> planning to design a new web framework and I also design a benchmark tool, >>> to make sure my framework is fast. >>> >>> My basic thinking is fast routing, fast session, in memory cache and >>> clean code. >>> >>> The first step is fast routing, I use a mechanism multi routing, >>> >>> *1st is hash routing, e.g. app.get('/user/login', login), will routing >>> by handlers['/user/login'](req, res);* >>> * >>> * >>> *2nd is multi hash routing, e.g. app.get('/user/:id/edit', >>> editprofile), will routing by handlers['user']['*']['edit'](req, res);* >>> * >>> * >>> *3rd is match routing, e.g. app.get(/user\/edit-(\d+)/, editprofile), >>> will routing by handlers.forEach(function(rule) { >>> if(rule.test(req.path) handlers[rule](req, res) })* >>> * >>> * >>> but before do this, I have to design the routing api. is sinatra like >>> api good enough? when I coding, I still need seprate the routings to >>> different files, so we have below code >>> >>> 1: in app.js: >>> >>>> app.get('/user/login', routes.user.login) >>> >>> >>> or 2: in routes/user.js : >>> >>> var app = require('../app'); >>>> app.get('/user/login, function(req, res, next) { // code here }); >>> >>> >>> or 3 >>> in app.js: >>> >>>> require('./routes')(app); >>> >>> >>> in routes/user.js >>> >>> module.exports = function(app) { >>>> app.get('/routes/user', function(req, res, next){// code here}) >>>> } >>> >>> >>> Did you see the problem? >>> >>> We can just map `get.user.login` to GET '/user/login' to save typing >>> and ignore circulate dependency. >>> >>> get/index.js >>>> var app = module.export >>>> // url: / url: /index goes here >>>> app.index = function(req, res) {} >>>> // url: /user goes here and all request of /user/* not found matchs >>>> goes here >>>> app.user = require('./user') >>>> get/user.js >>>> // url: /user/ and url: /user/index goes here >>>> user.index = function(req, res){} >>>> // url: /user/login goes here >>>> user.login = function(req, res) {} >>> >>> >>> but this method has a problem, how define param routing and regex >>> routing? >>> >>> What do you think about all these things? >>> >>> -- >>> Best regards, >>> >>> Jason Green >>> 桂林 >>> >>> >>> -- >> Job Board: http://jobs.nodejs.org/ >> Posting guidelines: >> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >> You received this message because you are subscribed to the Google >> Groups "nodejs" group. >> To post to this group, send email to [email protected] >> To unsubscribe from this group, send email to >> [email protected] >> For more options, visit this group at >> http://groups.google.com/group/nodejs?hl=en?hl=en >> > > > > -- > Best regards, > > Jason Green > 桂林 > > > -- Job Board: http://jobs.nodejs.org/ Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines You received this message because you are subscribed to the Google Groups "nodejs" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en
