diff options
author | William Deegan <bill@baddogconsulting.com> | 2019-08-20 22:11:41 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-20 22:11:41 (GMT) |
commit | b087c443c413918e46cec5ae4175155ab23ab8ac (patch) | |
tree | bd9bc59dbe331912328998b0723795b38543879f | |
parent | ce8f7eccdbcb626baa4a036dd8230268a5c35192 (diff) | |
parent | ba502ccd74df9f8411fdb63345a8a070b3764a49 (diff) | |
download | SCons-b087c443c413918e46cec5ae4175155ab23ab8ac.zip SCons-b087c443c413918e46cec5ae4175155ab23ab8ac.tar.gz SCons-b087c443c413918e46cec5ae4175155ab23ab8ac.tar.bz2 |
Merge pull request #3427 from chasinglogic/files-ninfo
Improve threading performance by sharing NodeInfo across threads
-rwxr-xr-x | src/CHANGES.txt | 6 | ||||
-rw-r--r-- | src/engine/SCons/Node/FSTests.py | 7 | ||||
-rw-r--r-- | src/engine/SCons/Node/__init__.py | 8 |
3 files changed, 11 insertions, 10 deletions
diff --git a/src/CHANGES.txt b/src/CHANGES.txt index 3efb734..6450da5 100755 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -6,9 +6,11 @@ RELEASE VERSION/DATE TO BE FILLED IN LATER - From John Doe: + From Mathew Robinson: - - Whatever John Doe did. + - Improved threading performance by ensuring NodeInfo is shared + across threads. Results in ~13% improvement for parallel builds + (-j# > 1) with many shared nodes. RELEASE 3.1.1 - Mon, 07 Aug 2019 20:09:12 -0500 diff --git a/src/engine/SCons/Node/FSTests.py b/src/engine/SCons/Node/FSTests.py index 72eaba7..eddfdf0 100644 --- a/src/engine/SCons/Node/FSTests.py +++ b/src/engine/SCons/Node/FSTests.py @@ -2545,11 +2545,10 @@ class FileTestCase(_tempdirTestCase): def get_ninfo(self): """ mocked to ensure csig will equal the filename""" - try: - return self.ninfo - except AttributeError: - self.ninfo = FakeNodeInfo(self.name, self.timestamp) + if self.ninfo is not None: return self.ninfo + self.ninfo = FakeNodeInfo(self.name, self.timestamp) + return self.ninfo def get_csig(self): ninfo = self.get_ninfo() diff --git a/src/engine/SCons/Node/__init__.py b/src/engine/SCons/Node/__init__.py index 572465f..daf79ba 100644 --- a/src/engine/SCons/Node/__init__.py +++ b/src/engine/SCons/Node/__init__.py @@ -614,6 +614,7 @@ class Node(object, with_metaclass(NoSlotsPyPy)): self._func_rexists = 1 self._func_get_contents = 0 self._func_target_from_source = 0 + self.ninfo = None self.clear_memoized_values() @@ -1131,11 +1132,10 @@ class Node(object, with_metaclass(NoSlotsPyPy)): return ninfo def get_ninfo(self): - try: - return self.ninfo - except AttributeError: - self.ninfo = self.new_ninfo() + if self.ninfo is not None: return self.ninfo + self.ninfo = self.new_ninfo() + return self.ninfo def new_binfo(self): binfo = self.BuildInfo() |