File: meldprofile.py

package info (click to toggle)
python-meld3 0.6.5-3.1
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 420 kB
  • sloc: python: 2,897; ansic: 319; makefile: 58
file content (67 lines) | stat: -rw-r--r-- 1,770 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import profile as profiler
import pstats
import meld3
# get rid of the noise of setting up an encoding
# in profile output
'.'.encode('utf-8')

template = """<html xmlns:meld="http://www.plope.com/software/meld3">
  <head>
    <title meld:id="title">This is the title</title>
    <div meld:id="headslot">This is the head slot</div>
  </head>
  <body>
   <div>
     <form action="." method="POST">
     <table border="0" meld:id="table1">
       <tbody meld:id="tbody">
         <tr meld:id="tr" class="foo">
           <td meld:id="td1">Name</td>
           <td meld:id="td2">Description</td>
         </tr>
       </tbody>
     </table>
     </form>
    </div>
  </body>
</html>"""

values = []
for thing in range(0, 20):
    values.append((str(thing), str(thing)))

def run(root):
    clone = root.clone()
    ob = clone.findmeld('tr')
    for tr, (name, desc) in ob.repeat(values):
        tr.findmeld('td1').content(name)
        tr.findmeld('td2').content(desc)
    foo = clone.write_htmlstring()

def profile(num):
##     import cProfile
##     profiler = cProfile
    profiler.run("[run(root) for x in range(0,100)]", 'logfile.dat')
    stats = pstats.Stats('logfile.dat')
    stats.strip_dirs()
    stats.sort_stats('cumulative', 'calls')
    #stats.sort_stats('calls')
    stats.print_stats(num)

if __name__ == '__main__':
    root = meld3.parse_xmlstring(template)
    run(root)
    profile(30)
    import timeit
    t = timeit.Timer("run(root)", "from __main__ import run, root")
    repeat = 50
    number = 50
    result = t.repeat(repeat, number)
    best = min(result)
    print "%d loops " % repeat
    usec = best * 1e6 / number
    msec = usec / 1000
    print "best of %d: %.*g msec per loop" % (repeat, 8, msec)
        
    #run(root, trace=True)