From b17e0e95db4cd85de976b9aa077e8b1ab1bb1474 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 26 Jan 2015 13:53:04 +0100 Subject: [PATCH] Optimize getModuleNameToShardStrategyMap() This map is based on constant data and can be easily pre-computed. Do precisely that. Change-Id: Ic3851034ca3ccd752c3f4afc0d1d3c77a9df9e65 Signed-off-by: Robert Varga --- .../cluster/datastore/ConfigurationImpl.java | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 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 9612275472..56b2d094c7 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 @@ -48,6 +48,7 @@ public class ConfigurationImpl implements Configuration { private final Map> shardReplicaNames = new HashMap<>(); private final Map namespaceToModuleName; + private final Map moduleNameToStrategy; public ConfigurationImpl(final String moduleShardsConfigPath, @@ -81,7 +82,16 @@ public class ConfigurationImpl implements Configuration { this.moduleShards = readModuleShards(moduleShardsConfig); this.modules = readModules(modulesConfig); - namespaceToModuleName = createNamespaceToModuleName(modules); + this.moduleNameToStrategy = createModuleNameToStrategy(modules); + this.namespaceToModuleName = createNamespaceToModuleName(modules); + } + + private static Map createModuleNameToStrategy(Iterable modules) { + final com.google.common.collect.ImmutableMap.Builder b = ImmutableMap.builder(); + for (Module m : modules) { + b.put(m.getName(), m.getShardStrategy()); + } + return b.build(); } private static Map createNamespaceToModuleName(Iterable modules) { @@ -123,13 +133,9 @@ public class ConfigurationImpl implements Configuration { 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()); - } - return map; + @Override + public Map getModuleNameToShardStrategyMap() { + return moduleNameToStrategy; } @Override public List getShardNamesFromModuleName(final String moduleName) { -- 2.36.6