You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2017/09/14 11:55:46 UTC

karaf git commit: [KARAF-5377] Speed up repository loading

Repository: karaf
Updated Branches:
  refs/heads/master 9a84c0a5a -> 83727d913


[KARAF-5377] Speed up repository loading

toLoad is used as a java.util.Queue, but is backed by an ArrayList,
which is highly inefficient when large number of items are present.

Turn it into a Queue with ArrayDeque as the implementation, which shaves
OpenDaylight initial start time from 102 seconds down to under3 seconds.

Signed-off-by: Robert Varga <ni...@hq.sk>


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/83727d91
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/83727d91
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/83727d91

Branch: refs/heads/master
Commit: 83727d913c4feb4a481d56baf60be487ae9491e1
Parents: 9a84c0a
Author: Robert Varga <ni...@hq.sk>
Authored: Thu Sep 14 13:26:07 2017 +0200
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Thu Sep 14 13:55:40 2017 +0200

----------------------------------------------------------------------
 .../karaf/features/internal/service/FeaturesServiceImpl.java   | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/83727d91/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesServiceImpl.java
----------------------------------------------------------------------
diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesServiceImpl.java b/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesServiceImpl.java
index 05177fb..c1e7b0c 100644
--- a/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesServiceImpl.java
+++ b/features/core/src/main/java/org/apache/karaf/features/internal/service/FeaturesServiceImpl.java
@@ -22,6 +22,7 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URI;
+import java.util.ArrayDeque;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -34,6 +35,7 @@ import java.util.HashSet;
 import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
+import java.util.Queue;
 import java.util.Set;
 import java.util.TreeMap;
 import java.util.TreeSet;
@@ -546,9 +548,9 @@ public class FeaturesServiceImpl implements FeaturesService, Deployer.DeployCall
         // Two phase load:
         // * first load dependent repositories
         Set<String> loaded = new HashSet<>();
-        List<String> toLoad = new ArrayList<>(uris);
+        Queue<String> toLoad = new ArrayDeque<>(uris);
         while (!toLoad.isEmpty()) {
-            String uri = toLoad.remove(0);
+            String uri = toLoad.remove();
             Repository repo;
             synchronized (lock) {
                 repo = repositories.getRepository(uri);