summaryrefslogtreecommitdiff
path: root/python/binaryview.py
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2022-04-11 11:53:01 -0400
committerPeter LaFosse <peter@vector35.com>2022-04-14 09:22:49 -0400
commit4425004475844466f2faa28bc1b136bf6da74977 (patch)
tree0131826d2f1857f2de65b4f47a2486a4c69005d3 /python/binaryview.py
parentdc0626a11c30387993380a31db3b4bce23d81983 (diff)
Add some python api side caching to improve performance for some frequently accessed fields
Diffstat (limited to 'python/binaryview.py')
-rw-r--r--python/binaryview.py10
1 files changed, 7 insertions, 3 deletions
diff --git a/python/binaryview.py b/python/binaryview.py
index 5cc920d5..5b58fa1d 100644
--- a/python/binaryview.py
+++ b/python/binaryview.py
@@ -1804,6 +1804,7 @@ class BinaryView:
self._parse_only = False
self._preload_limit = 5
self._platform = None
+ self._endianness = None
def __enter__(self):
return self
@@ -2198,11 +2199,12 @@ class BinaryView:
@property
def platform(self) -> Optional['_platform.Platform']:
"""The platform associated with the current BinaryView (read/write)"""
+ if self._platform is not None:
+ return self._platform
plat = core.BNGetDefaultPlatform(self.handle)
if plat is None:
return None
- if self._platform is None:
- self._platform = _platform.Platform(self.arch, handle=plat)
+ self._platform = _platform.Platform(self.arch, handle=plat)
return self._platform
@platform.setter
@@ -2216,7 +2218,9 @@ class BinaryView:
@property
def endianness(self) -> Endianness:
"""Endianness of the binary (read-only)"""
- return Endianness(core.BNGetDefaultEndianness(self.handle))
+ if self._endianness is None:
+ self._endianness = Endianness(core.BNGetDefaultEndianness(self.handle))
+ return self._endianness
@property
def relocatable(self) -> bool: