Skip to content

perf: optimize WebSocket listener removal to avoid repeated Arrays.asList - #160

Open
PerrierBouteille wants to merge 1 commit into
CloudNetService:mainfrom
PerrierBouteille:perf/netty-websocket-channel-optimizations
Open

PerrierBouteille wants to merge 1 commit into
CloudNetService:mainfrom
PerrierBouteille:perf/netty-websocket-channel-optimizations

Conversation

@PerrierBouteille

Copy link
Copy Markdown

Problem:

this.webSocketListeners.removeIf(listener -> Arrays.asList(listeners).contains(listener));

creates an Arrays.asList(listeners) allocation to each iteration of removeIf, with a linear contains test on this temporary list.

Fix

Set<WebSocketListener> toRemove = Set.of(listeners);
this.webSocketListeners.removeIf(toRemove::contains);

Materialize once all the listeners to be removed and use a search by Set.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant