##// END OF EJS Templates
perf: clear vfs audit_cache before each run...
marmoute -
r52485:24844407 default
parent child Browse files
Show More
@@ -2046,6 +2046,19 b' def perfstartup(ui, repo, **opts):'
2046 fm.end()
2046 fm.end()
2047
2047
2048
2048
2049 def _clear_store_audit_cache(repo):
2050 vfs = getsvfs(repo)
2051 # unwrap the fncache proxy
2052 if not hasattr(vfs, "audit"):
2053 vfs = getattr(vfs, "vfs", vfs)
2054 auditor = vfs.audit
2055 if hasattr(auditor, "clear_audit_cache"):
2056 auditor.clear_audit_cache()
2057 elif hasattr(auditor, "audited"):
2058 auditor.audited.clear()
2059 auditor.auditeddir.clear()
2060
2061
2049 def _find_stream_generator(version):
2062 def _find_stream_generator(version):
2050 """find the proper generator function for this stream version"""
2063 """find the proper generator function for this stream version"""
2051 import mercurial.streamclone
2064 import mercurial.streamclone
@@ -2119,6 +2132,9 b' def perf_stream_clone_scan(ui, repo, str'
2119
2132
2120 def setupone():
2133 def setupone():
2121 result_holder[0] = None
2134 result_holder[0] = None
2135 # This is important for the full generation, even if it does not
2136 # currently matters, it seems safer to also real it here.
2137 _clear_store_audit_cache(repo)
2122
2138
2123 generate = _find_stream_generator(stream_version)
2139 generate = _find_stream_generator(stream_version)
2124
2140
@@ -2154,12 +2170,15 b' def perf_stream_clone_generate(ui, repo,'
2154
2170
2155 generate = _find_stream_generator(stream_version)
2171 generate = _find_stream_generator(stream_version)
2156
2172
2173 def setup():
2174 _clear_store_audit_cache(repo)
2175
2157 def runone():
2176 def runone():
2158 # the lock is held for the duration the initialisation
2177 # the lock is held for the duration the initialisation
2159 for chunk in generate(repo):
2178 for chunk in generate(repo):
2160 pass
2179 pass
2161
2180
2162 timer(runone, title=b"generate")
2181 timer(runone, setup=setup, title=b"generate")
2163 fm.end()
2182 fm.end()
2164
2183
2165
2184
@@ -180,6 +180,13 b' class pathauditor:'
180 self.auditeddir.clear()
180 self.auditeddir.clear()
181 self._cached = False
181 self._cached = False
182
182
183 def clear_audit_cache(self):
184 """reset all audit cache
185
186 intended for debug and performance benchmark purposes"""
187 self.audited.clear()
188 self.auditeddir.clear()
189
183
190
184 def canonpath(
191 def canonpath(
185 root: bytes,
192 root: bytes,
General Comments 0
You need to be logged in to leave comments. Login now