Bladeren bron

Try to do some optimizations, but doesn't seem to do much

Yentl Van Tendeloo 7 jaren geleden
bovenliggende
commit
c694085612
1 gewijzigde bestanden met toevoegingen van 10 en 14 verwijderingen
  1. 10 14
      kernel/modelverse_kernel/compiled.py

+ 10 - 14
kernel/modelverse_kernel/compiled.py

@@ -96,6 +96,8 @@ def reverseKeyLookup(a, b, **remainder):
     if edges_out is None or edges_in is None:
         yield [("RETURN", [{'value': ""}])]
 
+    if len(edges_in) > 2:
+        edges_out = set(edges_out)
     for edge in edges_in:
         if edge in edges_out:
             out_edges, = yield [("RO", [edge])]
@@ -527,23 +529,21 @@ def read_attribute(a, b, c, root, **remainder):
             outgoing_names = []
             backlinks = {}
             edges_out, = yield [("RO", [m])]
-            edges_out = set(edges_out)
             for i in outgoing_edges:
                 edges_in, = yield [("RI", [i])]
-
-                if edges_in is None:
-                    continue
+                if len(edges_in) > 2:
+                    edges_out = set(edges_out)
 
                 for edge in edges_in:
                     if edge in edges_out:
                         out_edges, = yield [("RO", [edge])]
                         # Select one option randomly
-                        if out_edges:
-                            out_edge = out_edges.pop()
-                            e, = yield [("RE", [out_edge])]
-                            val, = yield [("RV", [e[1]])]
-                            backlinks[val] = i
-                            outgoing_names.append(val)
+                        out_edge = out_edges.pop()
+                        e, = yield [("RE", [out_edge])]
+                        val, = yield [("RV", [e[1]])]
+                        backlinks[val] = i
+                        outgoing_names.append(val)
+                        break
 
             if outgoing_names:
                 # Read out the types and flatten
@@ -566,9 +566,5 @@ def read_attribute(a, b, c, root, **remainder):
                     if edge in backlinks:
                         val, = yield [("RE", [backlinks[edge]])]
                         yield [("RETURN", [{'id': val[1]}])]
-                else:
-                    outgoing_edges, = yield [("RO", [elem])]
-                    ee = yield [("RE", [i]) for i in outgoing_edges]
-                    vals = yield [("RV", [i[1]]) for i in ee]
 
     yield [("RETURN", [{'id': root}])]