From 263d8328ebb58c4c0cbb7808ef74462bff20e640 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Wed, 12 May 2021 23:19:20 +0200 Subject: [PATCH] Fixes #82 - Reduce allocation for node and tree events Avoid using Java streams for node and tree events. Signed-off-by: Simone Bordet --- .../jetty/load/generator/LoadGenerator.java | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/jetty-load-generator-client/src/main/java/org/mortbay/jetty/load/generator/LoadGenerator.java b/jetty-load-generator-client/src/main/java/org/mortbay/jetty/load/generator/LoadGenerator.java index bad9b40d..b1371ecf 100644 --- a/jetty-load-generator-client/src/main/java/org/mortbay/jetty/load/generator/LoadGenerator.java +++ b/jetty-load-generator-client/src/main/java/org/mortbay/jetty/load/generator/LoadGenerator.java @@ -530,10 +530,13 @@ private void invokeCompleteListener(CompleteListener listener) { } private void fireResourceNodeEvent(Resource.Info info) { - config.getResourceListeners().stream() - .filter(l -> l instanceof Resource.NodeListener) - .map(l -> (Resource.NodeListener)l) - .forEach(l -> invokeResourceNodeListener(l, info)); + // Java streams are too expensive allocation-wise + // to be used for events generated in large numbers. + for (Resource.Listener l : config.getResourceListeners()) { + if (l instanceof Resource.NodeListener) { + invokeResourceNodeListener((Resource.NodeListener)l, info); + } + } } private void invokeResourceNodeListener(Resource.NodeListener listener, Resource.Info info) { @@ -545,10 +548,13 @@ private void invokeResourceNodeListener(Resource.NodeListener listener, Resource } private void fireResourceTreeEvent(Resource.Info info) { - config.getResourceListeners().stream() - .filter(l -> l instanceof Resource.TreeListener) - .map(l -> (Resource.TreeListener)l) - .forEach(l -> invokeResourceTreeListener(l, info)); + // Java streams are too expensive allocation-wise + // to be used for events generated in large numbers. + for (Resource.Listener l : config.getResourceListeners()) { + if (l instanceof Resource.TreeListener) { + invokeResourceTreeListener((Resource.TreeListener)l, info); + } + } } private void invokeResourceTreeListener(Resource.TreeListener listener, Resource.Info info) {