From 9f3dee99e733097e154e6f2bd33ba5861d5dc9e9 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 26 Jan 2015 11:42:06 +0100 Subject: [PATCH] Improve ConfigurationImpl performance This makes initialization of modules and moduleShards into an obvious constant, which can drive further optimization. Change-Id: I9bb73644967fb1f8129ca9739e842b3ce847a0e4 Signed-off-by: Robert Varga --- .../cluster/datastore/ConfigurationImpl.java | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 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 061e1ab448..1b15e2bd6c 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 @@ -10,6 +10,8 @@ package org.opendaylight.controller.cluster.datastore; 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.typesafe.config.Config; import com.typesafe.config.ConfigFactory; import com.typesafe.config.ConfigObject; @@ -29,9 +31,9 @@ import org.slf4j.LoggerFactory; public class ConfigurationImpl implements Configuration { - private final List moduleShards = new ArrayList<>(); + private final List moduleShards; - private final List modules = new ArrayList<>(); + private final List modules; private static final Logger LOG = LoggerFactory.getLogger(DistributedDataStore.class); @@ -74,9 +76,8 @@ public class ConfigurationImpl implements Configuration { modulesConfig = ConfigFactory.load(modulesConfigPath); } - readModuleShards(moduleShardsConfig); - - readModules(modulesConfig); + this.moduleShards = readModuleShards(moduleShardsConfig); + this.modules = readModules(modulesConfig); } @Override public List getMemberShardNames(final String memberName){ @@ -174,21 +175,25 @@ public class ConfigurationImpl implements Configuration { - private void readModules(final Config modulesConfig) { + private List readModules(final Config modulesConfig) { List modulesConfigObjectList = modulesConfig.getObjectList("modules"); + final Builder b = ImmutableList.builder(); for(ConfigObject o : modulesConfigObjectList){ ConfigObjectWrapper w = new ConfigObjectWrapper(o); - modules.add(new Module(w.stringValue("name"), w.stringValue( + b.add(new Module(w.stringValue("name"), w.stringValue( "namespace"), w.stringValue("shard-strategy"))); } + + return b.build(); } - private void readModuleShards(final Config moduleShardsConfig) { + private static List readModuleShards(final Config moduleShardsConfig) { List moduleShardsConfigObjectList = moduleShardsConfig.getObjectList("module-shards"); + final Builder b = ImmutableList.builder(); for(ConfigObject moduleShardConfigObject : moduleShardsConfigObjectList){ String moduleName = moduleShardConfigObject.get("name").unwrapped().toString(); @@ -204,12 +209,14 @@ public class ConfigurationImpl implements Configuration { shards.add(new Shard(shardName, replicas)); } - this.moduleShards.add(new ModuleShard(moduleName, shards)); + b.add(new ModuleShard(moduleName, shards)); } + + return b.build(); } - private class ModuleShard { + private static class ModuleShard { private final String moduleName; private final List shards; @@ -227,7 +234,7 @@ public class ConfigurationImpl implements Configuration { } } - private class Shard { + private static class Shard { private final String name; private final List replicas; -- 2.36.6