From 4425004475844466f2faa28bc1b136bf6da74977 Mon Sep 17 00:00:00 2001 From: Peter LaFosse Date: Mon, 11 Apr 2022 11:53:01 -0400 Subject: Add some python api side caching to improve performance for some frequently accessed fields --- python/binaryview.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'python/binaryview.py') 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: -- cgit v1.3.1