From 692832d0f4517dc24eb6a65016daf11322078391 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 26 Jan 2015 13:48:52 +0100 Subject: [PATCH] Optimize getModuleNameFromNameSpace Instead of looking up in the global array which is constant, pre-construct a constant lookup map. Change-Id: I85d54332b0a3b717d33da9758eaafbce5bd5595d Signed-off-by: Robert Varga --- .../cluster/datastore/ConfigurationImpl.java | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ConfigurationImpl.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ConfigurationImpl.java index 1b15e2bd6c..9612275472 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ConfigurationImpl.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ConfigurationImpl.java @@ -12,6 +12,7 @@ import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList.Builder; +import com.google.common.collect.ImmutableMap; import com.typesafe.config.Config; import com.typesafe.config.ConfigFactory; import com.typesafe.config.ConfigObject; @@ -46,6 +47,7 @@ public class ConfigurationImpl implements Configuration { // key = shardName, value = list of replicaNames (replicaNames are the same as memberNames) private final Map> shardReplicaNames = new HashMap<>(); + private final Map namespaceToModuleName; public ConfigurationImpl(final String moduleShardsConfigPath, @@ -78,6 +80,16 @@ public class ConfigurationImpl implements Configuration { this.moduleShards = readModuleShards(moduleShardsConfig); this.modules = readModules(modulesConfig); + + namespaceToModuleName = createNamespaceToModuleName(modules); + } + + private static Map createNamespaceToModuleName(Iterable modules) { + final com.google.common.collect.ImmutableMap.Builder b = ImmutableMap.builder(); + for (Module m : modules) { + b.put(m.getNameSpace(), m.getName()); + } + return b.build(); } @Override public List getMemberShardNames(final String memberName){ @@ -105,19 +117,14 @@ public class ConfigurationImpl implements Configuration { } - @Override public Optional getModuleNameFromNameSpace(final String nameSpace) { - + @Override + public Optional getModuleNameFromNameSpace(final String nameSpace) { Preconditions.checkNotNull(nameSpace, "nameSpace should not be null"); - - for(Module m : modules){ - if(m.getNameSpace().equals(nameSpace)){ - return Optional.of(m.getName()); - } - } - return Optional.absent(); + return Optional.fromNullable(namespaceToModuleName.get(nameSpace)); } @Override public Map getModuleNameToShardStrategyMap() { + // FIXME: can be constant view of modules Map map = new HashMap<>(); for(Module m : modules){ map.put(m.getName(), m.getShardStrategy()); @@ -129,6 +136,7 @@ public class ConfigurationImpl implements Configuration { Preconditions.checkNotNull(moduleName, "moduleName should not be null"); + // FIXME: can be constant view of moduleShards for(ModuleShard m : moduleShards){ if(m.getModuleName().equals(moduleName)){ List l = new ArrayList<>(); -- 2.36.6