Node.js的时间复杂度/效率emitter.removeListener(event,listener)

什么是Node.js的EventEmitter.removeListener(event,listener)方法的时间复杂度,根据绑定到发射器上的特定事件的侦听器的数量?

链接: http : //nodejs.org/api/events.html#events_emitter_removelistener_event_listener

对于一般情况,是O(n)还是接近O(1)?

基本上,我可能有成千上万的监听器绑定到相同的事件,我需要removeListener操作是O(1)。

EventEmitter源代码

这是O(n),因为在第230行的for循环。之后有Array.splice

find数组中的监听器是O(n):

 for (i = length; i-- > 0;) { if (list[i] === listener || (list[i].listener && list[i].listener === listener)) { position = i; break; } } 

还有从数组中移除侦听器的O(n):

 list.splice(position, 1); 
Interesting Posts