2015-04-30 6 views
2

Об использовании событий socket.io.socket.io - производительность нескольких событий

Что лучший подход:

socket.on('message', function (message) { 
    if(message.message1) { 
     // do something 
    } else if (message.message2) { 
     // do something else 
    } else if ... 
}); 

VS

socket.on('message1', function (message) { 
    // do something 
}); 
socket.on('message2', function (message) { 
    // do something else 
}); 
... 

Есть ли предел числа событий, где снижается производительность?

Второй вариант, по-видимому, является вариантом обслуживания и удобства чтения, но событие для каждого типа сообщений похоже на многое.

Есть ли какие-либо другие парадигмы программирования или передовая практика для этого?

+0

Существует абсолютно нулевая причина использовать первый подход. Просто используйте стандартную маршрутизацию socket.io. –

+0

Как насчет большого количества событий? Нет снижения производительности? – Stefan

+0

Первый подход позволит увидеть снижение производительности, а не второе. –

ответ

2

Маршрутизация сообщений о событиях в socket.io зависит от объекта как карты.

Реализация можно увидеть здесь: https://github.com/component/emitter/blob/master/index.js#L45

объекты, как карты очень быстро. В худшем случае (т. Е. Когда оптимизирующий компилятор не может заменить их классами), они работают как hash tables.

Эта маршрутизация намного быстрее, чем if вашего первого решения. Независимо от количества типов событий, которые у вас есть, не используйте это решение, кроме стандартного.

Смежные вопросы