Quellcode durchsuchen

use precomputed mappings for get_name-function in ODAPI (faster)

Joeri Exelmans vor 1 Jahr
Ursprung
Commit
d14d72b8e7
1 geänderte Dateien mit 16 neuen und 4 gelöschten Zeilen
  1. 16 4
      api/od.py

+ 16 - 4
api/od.py

@@ -118,10 +118,22 @@ class ODAPI:
         return types[0]
 
     def get_name(self, obj: UUID):
-        return (
-            [name for name in self.bottom.read_keys(self.m) if self.bottom.read_outgoing_elements(self.m, name)[0] == obj] +
-            [name for name in self.bottom.read_keys(self.mm) if self.bottom.read_outgoing_elements(self.mm, name)[0] == obj]
-        )[0]
+        # with Timer("get_name"):
+            if obj in self.m_obj_to_name:
+                name = self.m_obj_to_name[obj]
+                # print(f"name {name} was found!")
+                return name
+            elif obj in self.mm_obj_to_name:
+                name = self.mm_obj_to_name[obj]
+                # print(f"name {name} was found!")
+                return name
+            else:
+                name = (
+                    [name for name in self.bottom.read_keys(self.m) if self.bottom.read_outgoing_elements(self.m, name)[0] == obj] +
+                    [name for name in self.bottom.read_keys(self.mm) if self.bottom.read_outgoing_elements(self.mm, name)[0] == obj]
+                )[0]
+                # print(f"warning: name {name} not found??!!")
+                return name
 
     def get(self, name: str):
         results = self.bottom.read_outgoing_elements(self.m, name)