Speed up StmtContextUtils.getModuleQNameByPrefix() 27/93927/1
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 25 Nov 2020 02:34:26 +0000 (03:34 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 25 Nov 2020 08:58:54 +0000 (09:58 +0100)
We are looking up root twice here. Cache the lookup for reuse,
skipping one traversal.

Change-Id: I4ead06fa82b2ef822cbee0a2761bd90674bc1676
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 61f49cd2ff55f24af91c232d3a82ab3f2b565255)

yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StmtContextUtils.java

index bd73802063e0471a0f2b396c73be9a77422cb155..e949a6db916de6f9703a5e205e7a3bd5d9b43368 100644 (file)
@@ -595,14 +595,13 @@ public final class StmtContextUtils {
     }
 
     public static QNameModule getModuleQNameByPrefix(final StmtContext<?, ?, ?> ctx, final String prefix) {
-        final StmtContext<?, ?, ?> importedModule = ctx.getRoot().getFromNamespace(ImportPrefixToModuleCtx.class,
-            prefix);
+        final StmtContext<?, ?, ?> root = ctx.getRoot();
+        final StmtContext<?, ?, ?> importedModule = root.getFromNamespace(ImportPrefixToModuleCtx.class, prefix);
         final QNameModule qnameModule = ctx.getFromNamespace(ModuleCtxToModuleQName.class, importedModule);
         if (qnameModule != null) {
             return qnameModule;
         }
 
-        final StmtContext<?, ?, ?> root = ctx.getRoot();
         if (root.producesDeclared(SubmoduleStatement.class)) {
             final String moduleName = root.getFromNamespace(BelongsToPrefixToModuleName.class, prefix);
             return ctx.getFromNamespace(ModuleNameToModuleQName.class, moduleName);