전체 내용은 my other question을 확인하십시오. 그것은 다음과 같은 코드를 소켓 핸들러의 이름이 기능을 사용하는 것이 더 효율적이라면V8 내부 - 익명 함수 처리
기본적으로, 내가 물어 봤다 :
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
});
});
전체 응답, 예 (자세한 내용은 위의 링크를 참조)했지만,
내가 V8 내부에 익숙하지 않아요하지만 단지 첨부 된 다른 범위로, 한 번 기능을 컴파일하고 다시 사용할 때마다 그것을 똑똑 수 있습니다 : 다음과 같은 코멘트 ThiefMaster에 의해 게시했습니다.
이제 제 질문입니다. V8은 익명 기능을 한 번 컴파일하고 익명 기능이 일반적으로 여러 함수 인스턴스를 생성하는 상황에서 다른 범위로 재사용 할만큼 충분히 똑똑합니까? 예를 들어 위의 경우 connection
이벤트에 대한 처리기가 한 번 생성되지만 각 연결에 대해 action1
, action2
및 disconnect
에 대한 처리기가 만들어지기를 기대합니다. 다른 질문에 이것은 명명 된 함수로 해결되었지만 이것이 V8에서 필요하거나 최적화가 필요한 경우 더 관심이 있습니다.
이 기능은 지명 된 또는 익명의; 각 연결에 대해 새 함수를 작성하는지 여부와 관계가 있습니다. (자세한 내용은 내 대답을 참조하십시오.) –