You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2020/01/17 10:11:34 UTC
[camel] 01/02: CAMEL-14534: camel-core - Optimize reactive engine
to use Deque instead of LinkedList which is faster and dont cause soo much
object allocations.
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
commit d1a866d0c8fe38c38b722df02c6fac8ba23d28e8
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Jan 17 11:00:38 2020 +0100
CAMEL-14534: camel-core - Optimize reactive engine to use Deque instead of LinkedList which is faster and dont cause soo much object allocations.
---
.../apache/camel/impl/engine/DefaultReactiveExecutor.java | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultReactiveExecutor.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultReactiveExecutor.java
index b12b8f4..d3467b1 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultReactiveExecutor.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultReactiveExecutor.java
@@ -16,12 +16,12 @@
*/
package org.apache.camel.impl.engine;
-import java.util.LinkedList;
+import java.util.ArrayDeque;
+import java.util.Deque;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
import java.util.function.Supplier;
-import org.apache.camel.AsyncCallback;
import org.apache.camel.StaticService;
import org.apache.camel.api.management.ManagedAttribute;
import org.apache.camel.api.management.ManagedResource;
@@ -136,8 +136,8 @@ public class DefaultReactiveExecutor extends ServiceSupport implements ReactiveE
private static class Worker {
private final DefaultReactiveExecutor executor;
- private volatile LinkedList<Runnable> queue = new LinkedList<>();
- private volatile LinkedList<LinkedList<Runnable>> back;
+ private volatile Deque<Runnable> queue = new ArrayDeque<>();
+ private volatile Deque<Deque<Runnable>> back;
private volatile boolean running;
public Worker(DefaultReactiveExecutor executor) {
@@ -151,10 +151,10 @@ public class DefaultReactiveExecutor extends ServiceSupport implements ReactiveE
if (main) {
if (!queue.isEmpty()) {
if (back == null) {
- back = new LinkedList<>();
+ back = new ArrayDeque<>();
}
back.push(queue);
- queue = new LinkedList<>();
+ queue = new ArrayDeque<>();
}
}
if (first) {