OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # | 2 # |
3 # Copyright 2015 the V8 project authors. All rights reserved. | 3 # Copyright 2015 the V8 project authors. All rights reserved. |
4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
6 | 6 |
7 """This script is used to analyze GCTracer's NVP output.""" | 7 """This script is used to analyze GCTracer's NVP output.""" |
8 | 8 |
9 | 9 |
10 from argparse import ArgumentParser | 10 from argparse import ArgumentParser |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
90 return min(self.values) | 90 return min(self.values) |
91 | 91 |
92 def max(self): | 92 def max(self): |
93 return max(self.values) | 93 return max(self.values) |
94 | 94 |
95 def avg(self): | 95 def avg(self): |
96 if len(self.values) == 0: | 96 if len(self.values) == 0: |
97 return 0.0 | 97 return 0.0 |
98 return sum(self.values) / len(self.values) | 98 return sum(self.values) / len(self.values) |
99 | 99 |
| 100 def empty(self): |
| 101 return len(self.values) == 0 |
| 102 |
100 def __str__(self): | 103 def __str__(self): |
101 if self.csv: | 104 if self.csv: |
102 ret = [self.key] | 105 ret = [self.key] |
103 ret.append(len(self.values)) | 106 ret.append(len(self.values)) |
104 ret.append(self.min()) | 107 ret.append(self.min()) |
105 ret.append(self.max()) | 108 ret.append(self.max()) |
106 ret.append(self.avg()) | 109 ret.append(self.avg()) |
107 ret = [str(x) for x in ret] | 110 ret = [str(x) for x in ret] |
108 return ",".join(ret) | 111 return ",".join(ret) |
109 else: | 112 else: |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 for key in args.keys ] | 175 for key in args.keys ] |
173 | 176 |
174 while True: | 177 while True: |
175 line = stdin.readline() | 178 line = stdin.readline() |
176 if not line: | 179 if not line: |
177 break | 180 break |
178 obj = split_nvp(line) | 181 obj = split_nvp(line) |
179 for category in categories: | 182 for category in categories: |
180 category.process_entry(obj) | 183 category.process_entry(obj) |
181 | 184 |
| 185 # Filter out empty categories. |
| 186 categories = [x for x in categories if not x.empty()] |
| 187 |
182 if args.rank != "no": | 188 if args.rank != "no": |
183 categories = sorted(categories, key=make_key_func(args.rank), reverse=True) | 189 categories = sorted(categories, key=make_key_func(args.rank), reverse=True) |
184 | 190 |
185 for category in categories: | 191 for category in categories: |
186 print(category) | 192 print(category) |
187 | 193 |
188 | 194 |
189 if __name__ == '__main__': | 195 if __name__ == '__main__': |
190 main() | 196 main() |
OLD | NEW |