~linaro-toolchain-dev/cortex-strings/trunk

« back to all changes in this revision

Viewing changes to scripts/plot-top.py

  • Committer: Michael Hope
  • Date: 2011-08-30 03:54:21 UTC
  • Revision ID: michael.hope@linaro.org-20110830035421-vb2ijg1k9oyuwgs3
Added tests for memchr and strchr from GLIBC.  Added a note on the routines and where they come from.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/env python
2
 
 
3
 
"""Plot the performance of different variants of the string routines
4
 
for one size.
5
 
"""
6
 
 
7
 
import libplot
8
 
 
9
 
import pylab
10
 
 
11
 
 
12
 
def plot(records, bytes):
13
 
    records = [x for x in records if x.bytes==bytes]
14
 
 
15
 
    variants = libplot.unique(records, 'variant', prefer='this')
16
 
    functions = libplot.unique(records, 'function')
17
 
 
18
 
    X = pylab.arange(len(functions))
19
 
    width = 1.0/(len(variants)+1)
20
 
 
21
 
    colours = iter('bgrcmyk')
22
 
 
23
 
    pylab.figure(1).set_size_inches((16, 12))
24
 
    pylab.clf()
25
 
 
26
 
    for i, variant in enumerate(variants):
27
 
        heights = []
28
 
 
29
 
        for function in functions:
30
 
            matches = [x for x in records if x.variant==variant and x.function==function and x.alignment==8]
31
 
 
32
 
            if matches:
33
 
                match = matches[0]
34
 
                heights.append(match.bytes*match.loops/match.elapsed/(1024*1024))
35
 
            else:
36
 
                heights.append(0)
37
 
 
38
 
        pylab.bar(X+i*width, heights, width, color=colours.next(), label=variant)
39
 
 
40
 
    axes = pylab.axes()
41
 
    axes.set_xticklabels(functions)
42
 
    axes.set_xticks(X + 0.5)
43
 
 
44
 
    pylab.title('Performance of different variants for %d byte blocks' % bytes)
45
 
    pylab.ylabel('Rate (MB/s)')
46
 
    pylab.legend(loc='upper left', ncol=3)
47
 
    pylab.grid()
48
 
    pylab.savefig('top-%06d.png' % bytes, dpi=72)
49
 
 
50
 
def main():
51
 
    records = libplot.parse()
52
 
 
53
 
    for bytes in libplot.unique(records, 'bytes'):
54
 
        plot(records, bytes)
55
 
 
56
 
    pylab.show()
57
 
 
58
 
if __name__ == '__main__':
59
 
    main()