对于完整的故事,看看我的其他问题 。
基本上,我问,如果它是更有效地在插座的处理程序下面的代码使用命名的功能:
var app = require('express').createServer()
var io = require('socket.io').listen(app);
app.listen(8080);
// Some unrelated stuff
io.sockets.on('connection', function (socket) {
socket.on('action1', function (data) {
// logic for action1
});
socket.on('action2', function (data) {
// logic for action2
});
socket.on('disconnect', function(){
// logic for disconnect
});
});
总的回答是肯定的(见上面的链接了解详情),但下面的评论被张贴ThiefMaster :
我不熟悉的V8内部,但它可能是足够聪明,一旦编译功能,并重新使用每次它,只是附加有不同的范围。
所以,现在是我的问题。 V8是足够聪明的编译匿名函数一次,并正在创建与情况下匿名函数通常导致一些功能情况不同范围内重复使用它们? 例如,上面我所期望的处理程序connection
创建一次事件,但对于处理action1
, action2
,并disconnect
每个连接创建。 在其他问题该解决了与命名功能,但我更感兴趣,如果这是必要的V8或是否会做一些优化。