contrib/perf.py
changeset 18240 a8318715d8bb
parent 18239 a95f1d619bb7
child 18241 f5ed27c51995
equal deleted inserted replaced
18239:a95f1d619bb7 18240:a8318715d8bb
     1 # perf.py - performance test routines
     1 # perf.py - performance test routines
     2 '''helper extension to measure performance'''
     2 '''helper extension to measure performance'''
     3 
     3 
     4 from mercurial import cmdutil, scmutil, util, match, commands
     4 from mercurial import cmdutil, scmutil, util, match, commands, obsolete
       
     5 from mercurial import repoview
     5 import time, os, sys
     6 import time, os, sys
     6 
     7 
     7 cmdtable = {}
     8 cmdtable = {}
     8 command = cmdutil.command(cmdtable)
     9 command = cmdutil.command(cmdtable)
     9 
    10 
   273     def d():
   274     def d():
   274         if clear:
   275         if clear:
   275             repo.invalidatevolatilesets()
   276             repo.invalidatevolatilesets()
   276         repo.revs(expr)
   277         repo.revs(expr)
   277     timer(d)
   278     timer(d)
       
   279 
       
   280 @command('perfvolatilesets')
       
   281 def perfvolatilesets(ui, repo):
       
   282     """benchmark the computation of various volatile set
       
   283 
       
   284     Volatile set computes element related to filtering and obsolescence."""
       
   285     repo = repo.unfiltered()
       
   286 
       
   287     def getobs(name):
       
   288         def d():
       
   289             repo.invalidatevolatilesets()
       
   290             obsolete.getrevs(repo, name)
       
   291         return d
       
   292 
       
   293     for name in sorted(obsolete.cachefuncs):
       
   294         timer(getobs(name), title=name)
       
   295 
       
   296     def getfiltered(name):
       
   297         def d():
       
   298             repo.invalidatevolatilesets()
       
   299             repoview.filteredrevs(repo, name)
       
   300         return d
       
   301 
       
   302     for name in sorted(repoview.filtertable):
       
   303         timer(getfiltered(name), title=name)