Mercurial > public > mercurial-scm > hg
comparison mercurial/manifest.py @ 31097:4a1486c73fdf
manifest: check 'if x is None' instead of 'if not x'
The old code here would end up executing __len__ on a tree manifest to determine
if 'not _data' was true or not. This was very expensive on large repos. Since
this function just cares about memoization, we can just check 'if _data is None'
instead and save a bunch of time.
author | Durham Goode <durham@fb.com> |
---|---|
date | Sun, 26 Feb 2017 10:16:47 -0800 |
parents | 7fbc8a742b4d |
children | 6d9f8bc2b5ea |
comparison
equal
deleted
inserted
replaced
31096:356937ea7a02 | 31097:4a1486c73fdf |
---|---|
1384 @propertycache | 1384 @propertycache |
1385 def parents(self): | 1385 def parents(self): |
1386 return self._revlog().parents(self._node) | 1386 return self._revlog().parents(self._node) |
1387 | 1387 |
1388 def read(self): | 1388 def read(self): |
1389 if not self._data: | 1389 if self._data is None: |
1390 if self._node == revlog.nullid: | 1390 if self._node == revlog.nullid: |
1391 self._data = manifestdict() | 1391 self._data = manifestdict() |
1392 else: | 1392 else: |
1393 rl = self._revlog() | 1393 rl = self._revlog() |
1394 text = rl.revision(self._node) | 1394 text = rl.revision(self._node) |
1482 | 1482 |
1483 def _revlog(self): | 1483 def _revlog(self): |
1484 return self._repo.manifestlog._revlog.dirlog(self._dir) | 1484 return self._repo.manifestlog._revlog.dirlog(self._dir) |
1485 | 1485 |
1486 def read(self): | 1486 def read(self): |
1487 if not self._data: | 1487 if self._data is None: |
1488 rl = self._revlog() | 1488 rl = self._revlog() |
1489 if self._node == revlog.nullid: | 1489 if self._node == revlog.nullid: |
1490 self._data = treemanifest() | 1490 self._data = treemanifest() |
1491 elif rl._treeondisk: | 1491 elif rl._treeondisk: |
1492 m = treemanifest(dir=self._dir) | 1492 m = treemanifest(dir=self._dir) |