@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

Reply via email to