Show More
@@ -166,7 +166,7 b' def _validatetables(ui, mod):' | |||
|
166 | 166 | _rejectunicode(t, o._table) |
|
167 | 167 | _validatecmdtable(ui, getattr(mod, 'cmdtable', {})) |
|
168 | 168 | |
|
169 | def load(ui, name, path, log=lambda *a: None): | |
|
169 | def load(ui, name, path, log=lambda *a: None, loadingtime=None): | |
|
170 | 170 | if name.startswith('hgext.') or name.startswith('hgext/'): |
|
171 | 171 | shortname = name[6:] |
|
172 | 172 | else: |
@@ -180,6 +180,8 b' def load(ui, name, path, log=lambda *a: ' | |||
|
180 | 180 | with util.timedcm('load extension %r', shortname) as stats: |
|
181 | 181 | mod = _importext(name, path, bind(_reportimporterror, ui)) |
|
182 | 182 | log(' > %r extension loaded in %s\n', shortname, stats) |
|
183 | if loadingtime is not None: | |
|
184 | loadingtime[shortname] += stats.elapsed | |
|
183 | 185 | |
|
184 | 186 | # Before we do anything with the extension, check against minimum stated |
|
185 | 187 | # compatibility. This gives extension authors a mechanism to have their |
@@ -237,6 +239,7 b' def loadall(ui, whitelist=None):' | |||
|
237 | 239 | msg % values, label='debug.extensions') |
|
238 | 240 | else: |
|
239 | 241 | log = lambda *a, **kw: None |
|
242 | loadingtime = collections.defaultdict(int) | |
|
240 | 243 | result = ui.configitems("extensions") |
|
241 | 244 | if whitelist is not None: |
|
242 | 245 | result = [(k, v) for (k, v) in result if k in whitelist] |
@@ -252,7 +255,7 b' def loadall(ui, whitelist=None):' | |||
|
252 | 255 | _disabledextensions[name] = path[1:] |
|
253 | 256 | continue |
|
254 | 257 | try: |
|
255 | load(ui, name, path, log) | |
|
258 | load(ui, name, path, log, loadingtime) | |
|
256 | 259 | except Exception as inst: |
|
257 | 260 | msg = stringutil.forcebytestr(inst) |
|
258 | 261 | if path: |
@@ -292,6 +295,7 b' def loadall(ui, whitelist=None):' | |||
|
292 | 295 | log(' - the %r extension uisetup failed\n', name) |
|
293 | 296 | broken.add(name) |
|
294 | 297 | log(' > uisetup for %r took %s\n', name, stats) |
|
298 | loadingtime[name] += stats.elapsed | |
|
295 | 299 | log('> all uisetup took %s\n', alluisetupstats) |
|
296 | 300 | |
|
297 | 301 | log('- executing extsetup hooks\n') |
@@ -305,6 +309,7 b' def loadall(ui, whitelist=None):' | |||
|
305 | 309 | log(' - the %r extension extsetup failed\n', name) |
|
306 | 310 | broken.add(name) |
|
307 | 311 | log(' > extsetup for %r took %s\n', name, stats) |
|
312 | loadingtime[name] += stats.elapsed | |
|
308 | 313 | log('> all extsetup took %s\n', allextetupstats) |
|
309 | 314 | |
|
310 | 315 | for name in broken: |
@@ -360,6 +365,12 b' def loadall(ui, whitelist=None):' | |||
|
360 | 365 | with util.timedcm('load registration objects') as stats: |
|
361 | 366 | _loadextra(ui, newindex, extraloaders) |
|
362 | 367 | log('> extension registration object loading took %s\n', stats) |
|
368 | ||
|
369 | # Report per extension loading time (except reposetup) | |
|
370 | for name in sorted(loadingtime): | |
|
371 | extension_msg = '> extension %s take a total of %s to load\n' | |
|
372 | log(extension_msg, name, util.timecount(loadingtime[name])) | |
|
373 | ||
|
363 | 374 | log('extension loading complete\n') |
|
364 | 375 | |
|
365 | 376 | def _loadextra(ui, newindex, extraloaders): |
@@ -122,6 +122,8 b' show traceback for ImportError of hgext.' | |||
|
122 | 122 | debug.extensions: > remaining aftercallbacks completed in * (glob) |
|
123 | 123 | debug.extensions: - loading extension registration objects |
|
124 | 124 | debug.extensions: > extension registration object loading took * (glob) |
|
125 | debug.extensions: > extension baddocext take a total of * to load (glob) | |
|
126 | debug.extensions: > extension gpg take a total of * to load (glob) | |
|
125 | 127 | debug.extensions: extension loading complete |
|
126 | 128 | #endif |
|
127 | 129 |
@@ -68,6 +68,7 b' Test extension setup timings' | |||
|
68 | 68 | debug.extensions: > remaining aftercallbacks completed in * (glob) |
|
69 | 69 | debug.extensions: - loading extension registration objects |
|
70 | 70 | debug.extensions: > extension registration object loading took * (glob) |
|
71 | debug.extensions: > extension foobar take a total of * to load (glob) | |
|
71 | 72 | debug.extensions: extension loading complete |
|
72 | 73 | debug.extensions: loading additional extensions |
|
73 | 74 | debug.extensions: - processing 1 entries |
General Comments 0
You need to be logged in to leave comments.
Login now