contrib/perf.py
changeset 40145 21261fc0fb2b
parent 40144 acf560bc9b56
child 40214 b456b2e0ad9f
equal deleted inserted replaced
40144:acf560bc9b56 40145:21261fc0fb2b
   299         if cstop - begin > 3 and count >= 100:
   299         if cstop - begin > 3 and count >= 100:
   300             break
   300             break
   301         if cstop - begin > 10 and count >= 3:
   301         if cstop - begin > 10 and count >= 3:
   302             break
   302             break
   303 
   303 
       
   304     formatone(fm, results, title=title, result=r,
       
   305               displayall=displayall)
       
   306 
       
   307 def formatone(fm, timings, title=None, result=None, displayall=False):
       
   308 
       
   309     count = len(timings)
       
   310 
   304     fm.startitem()
   311     fm.startitem()
   305 
   312 
   306     if title:
   313     if title:
   307         fm.write(b'title', b'! %s\n', title)
   314         fm.write(b'title', b'! %s\n', title)
   308     if r:
   315     if result:
   309         fm.write(b'result', b'! result: %s\n', r)
   316         fm.write(b'result', b'! result: %s\n', result)
   310     def display(role, entry):
   317     def display(role, entry):
   311         prefix = b''
   318         prefix = b''
   312         if role != b'best':
   319         if role != b'best':
   313             prefix = b'%s.' % role
   320             prefix = b'%s.' % role
   314         fm.plain(b'!')
   321         fm.plain(b'!')
   316         fm.write(prefix + b'comb', b' comb %f', entry[1] + entry[2])
   323         fm.write(prefix + b'comb', b' comb %f', entry[1] + entry[2])
   317         fm.write(prefix + b'user', b' user %f', entry[1])
   324         fm.write(prefix + b'user', b' user %f', entry[1])
   318         fm.write(prefix + b'sys',  b' sys %f', entry[2])
   325         fm.write(prefix + b'sys',  b' sys %f', entry[2])
   319         fm.write(prefix + b'count',  b' (%s of %%d)' % role, count)
   326         fm.write(prefix + b'count',  b' (%s of %%d)' % role, count)
   320         fm.plain(b'\n')
   327         fm.plain(b'\n')
   321     results.sort()
   328     timings.sort()
   322     min_val = results[0]
   329     min_val = timings[0]
   323     display(b'best', min_val)
   330     display(b'best', min_val)
   324     if displayall:
   331     if displayall:
   325         max_val = results[-1]
   332         max_val = timings[-1]
   326         display(b'max', max_val)
   333         display(b'max', max_val)
   327         avg = tuple([sum(x) / count for x in zip(*results)])
   334         avg = tuple([sum(x) / count for x in zip(*timings)])
   328         display(b'avg', avg)
   335         display(b'avg', avg)
   329         median = results[len(results) // 2]
   336         median = timings[len(timings) // 2]
   330         display(b'median', median)
   337         display(b'median', median)
   331 
   338 
   332 # utilities for historical portability
   339 # utilities for historical portability
   333 
   340 
   334 def getint(ui, section, name, default):
   341 def getint(ui, section, name, default):