# HG changeset patch # User Benoit Boissinot # Date 1220361170 -7200 # Node ID 63d1d3e489f88bea65b3e90404f678d73b6575dc # Parent b3bc518a73c30ff8951f888eb008de30f1e46c61 performance: normalize self._root, avoid calling os.path.join() in dirstate In dirstate, self._join() might get called a lot. Instead of calling it we create self._rootdir and we then only need to append the filename. diff -r b3bc518a73c3 -r 63d1d3e489f8 mercurial/dirstate.py --- a/mercurial/dirstate.py Tue Sep 02 15:08:26 2008 +0200 +++ b/mercurial/dirstate.py Tue Sep 02 15:12:50 2008 +0200 @@ -28,6 +28,7 @@ def __init__(self, opener, ui, root): self._opener = opener self._root = root + self._rootdir = os.path.join(root, '') self._dirty = False self._dirtypl = False self._ui = ui @@ -99,13 +100,14 @@ raise AttributeError, name def _join(self, f): - return os.path.join(self._root, f) + # much faster than os.path.join() + return self._rootdir + f def flagfunc(self, fallback): if self._checklink: if self._checkexec: def f(x): - p = os.path.join(self._root, x) + p = self._join(x) if os.path.islink(p): return 'l' if util.is_exec(p): @@ -113,7 +115,7 @@ return '' return f def f(x): - if os.path.islink(os.path.join(self._root, x)): + if os.path.islink(self._join(x)): return 'l' if 'x' in fallback(x): return 'x' @@ -123,7 +125,7 @@ def f(x): if 'l' in fallback(x): return 'l' - if util.is_exec(os.path.join(self._root, x)): + if util.is_exec(self._join(x)): return 'x' return '' return f