~josharenson/+junk/SimplePerf

« back to all changes in this revision

Viewing changes to app/tests/autopilot/parse_qsg_info.py

  • Committer: josharenson
  • Date: 2014-07-10 18:47:21 UTC
  • Revision ID: joshua.arenson@canonical.com-20140710184721-y6fl6tb4kh644a1m
Added average calculator for all atts

Show diffs side-by-side

added added

removed removed

Lines of Context:
54
54
    for frame in frames:
55
55
        if 'render_time_atts' in frame.keys():
56
56
            render_times_sum += int(frame['render_time_atts']['render'])
57
 
            render_times += 1
 
57
            if int(frame['render_time_atts']['render']) is not 0:
 
58
                render_times += 1
58
59
    return render_times_sum / render_times
59
60
 
 
61
def get_all_averages(frames):
 
62
    results = {}
 
63
    counts = {}
 
64
    # WARNING, O(N)^3
 
65
    for frame in frames:
 
66
        for key in frame.keys():
 
67
            for nested_key in frame[key].keys():
 
68
                try:
 
69
                    # results[key][nested_key] += int(frame[key][nested_key])
 
70
                    att = results[key][nested_key]
 
71
                    att['count'] += 1
 
72
                    att['sum'] += int(frame[key][nested_key])
 
73
                    att['average'] = att['sum'] / att['count']
 
74
                except ValueError:
 
75
                    pass # We don't care about non int values
 
76
                except KeyError:
 
77
                    # Initialize the inner results dict
 
78
                    try:
 
79
                        results[key][nested_key] = {}
 
80
                        results[key][nested_key]["count"] = 1
 
81
                        results[key][nested_key]["average"] = 0
 
82
                        results[key][nested_key]["sum"] = 0
 
83
                    except KeyError:
 
84
                        # Initialize the outter results dict
 
85
                        results[key] = {}
 
86
    return results
 
87
 
 
88
def pretty_print_averages(averages):
 
89
    for thread in averages:
 
90
        print '{:-^40}'.format(" " + thread + " ")
 
91
        for key in averages[thread].keys():
 
92
            print '{:.<20}'.format(key) + " " + str(averages[thread][key]['average'])
 
93
 
 
94
 
60
95
if __name__ == "__main__":
61
96
    if len(sys.argv) is not 2:
62
97
        print_usage()
64
99
        print_usage()
65
100
    else:
66
101
        frames = process_file(sys.argv[1])
67
 
        print get_average_render_time(frames)
 
102
        averages = get_all_averages(frames)
 
103
        pretty_print_averages(averages)
68
104