Forráskód Böngészése

Minor optimization

Yentl Van Tendeloo 8 éve
szülő
commit
de486b16c2
1 módosított fájl, 7 hozzáadás és 2 törlés
  1. 7 2
      kernel/modelverse_kernel/compiled.py

+ 7 - 2
kernel/modelverse_kernel/compiled.py

@@ -211,6 +211,8 @@ def get_superclasses(a, b, **remainder):
     worklist = set([name_value])
     found = set([])
 
+    cache_value = {}
+
     while worklist:
         name = worklist.pop()
         if name in found:
@@ -233,8 +235,11 @@ def get_superclasses(a, b, **remainder):
                 edge, = yield [("RE", [link])]
                 src, dst = edge
                 # Look up dst's name and add it
-                dst_name, = yield [("CALL_ARGS", [reverseKeyLookup, [model_dict, dst]])]
-                dst_name_value, = yield [("RV", [dst_name])]
+                if dst not in cache_value:
+                    dst_name, = yield [("CALL_ARGS", [reverseKeyLookup, [model_dict, dst]])]
+                    dst_name_value, = yield [("RV", [dst_name])]
+                    cache_value[dst] = dst_name_value
+                dst_name_value = cache_value[dst]
                 worklist.add(dst_name_value)
 
     result, = yield [("CN", [])]