Skip to content

Commit f7be7c9

Browse files
authored
Move lru_cache definitions to __init__ (#18)
Using the lru_cache decorators on class methods, the ones that have a reference to `self`, will also cache self. So we move it to the __init__ of the class (DIS-2913)
1 parent daeb308 commit f7be7c9

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

dissect/cim/index.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,11 @@ class Index:
1616
def __init__(self, cim, fh, mapping):
1717
self.store = Store(cim, fh, mapping)
1818

19+
self._lookup = lru_cache(1024)(self._lookup)
20+
1921
def lookup(self, key):
2022
return self._lookup(str(key), self.store.root_page)
2123

22-
@lru_cache(1024)
2324
def _lookup(self, key, page):
2425
matches = []
2526

@@ -94,6 +95,8 @@ def __init__(self, store, fh, logical_num, page_num):
9495

9596
self.count = self.page.record_count
9697

98+
self.key = lru_cache(256)(self.key)
99+
97100
def _string_part(self, idx):
98101
offset = self.page.string_table[idx]
99102
return self.data[offset : self.data.find(b"\x00", offset)].decode("utf8")
@@ -108,7 +111,6 @@ def string(self, idx):
108111

109112
return "/".join(parts)
110113

111-
@lru_cache(256)
112114
def key(self, idx):
113115
str_idx = self.page.keys[idx]
114116
key_idx = self.string(str_idx)

dissect/cim/mappings.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ def __init__(self, cim, fh):
1616

1717
self._reverse_map = {}
1818

19+
self.get_entry = lru_cache(256)(self.get_entry)
20+
1921
def __getitem__(self, k):
2022
if not isinstance(k, int):
2123
raise ValueError("Invalid type")
@@ -31,7 +33,6 @@ def _generate_reverse_map(self):
3133

3234
self._reverse_map[pnum] = i
3335

34-
@lru_cache(256)
3536
def get_entry(self, logical_num):
3637
if logical_num > self.mapping.mapping_entry_count:
3738
raise IndexError(logical_num)

0 commit comments

Comments
 (0)