bookmarks: directly use base dict 'setitem'
The bmstore '__setitem__' method is setting an extra flag that is not needed
during initialization. Skipping the method will allow further cleanup and yield
some speedup as a side effect.
Before:
! wall 0.009120 comb 0.010000 user 0.010000 sys 0.000000 (best of 312)
After:
! wall 0.007874 comb 0.010000 user 0.010000 sys 0.000000 (best of 360)
--- a/mercurial/bookmarks.py Wed Jun 07 19:22:39 2017 +0100
+++ b/mercurial/bookmarks.py Wed Jun 07 19:13:09 2017 +0100
@@ -52,6 +52,7 @@
self._repo = repo
nm = repo.changelog.nodemap
tonode = bin # force local lookup
+ setitem = dict.__setitem__
try:
bkfile = _getbkfile(repo)
for line in bkfile:
@@ -63,7 +64,7 @@
node = tonode(sha)
if node in nm:
refspec = encoding.tolocal(refspec)
- self[refspec] = node
+ setitem(self, refspec, node)
except (TypeError, ValueError):
# - bin(...) can raise TypeError
# - node in nm can raise ValueError for non-20-bytes entry