Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Side by Side Diff: tools/ignition/bytecode_dispatches_report.py

Issue 1875263004: [Interpreter] Report hottest bytecodes in bytecode_dispatches_report.py (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@viz-count-h2h
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | tools/ignition/bytecode_dispatches_report_test.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #! /usr/bin/python 1 #! /usr/bin/python
2 # 2 #
3 # Copyright 2016 the V8 project authors. All rights reserved. 3 # Copyright 2016 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 7
8 import argparse 8 import argparse
9 import heapq 9 import heapq
10 import json 10 import json
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 key=lambda x: x[2]) 61 key=lambda x: x[2])
62 62
63 63
64 def print_top_counters(dispatches_table, top_count): 64 def print_top_counters(dispatches_table, top_count):
65 top_counters = find_top_counters(dispatches_table, top_count) 65 top_counters = find_top_counters(dispatches_table, top_count)
66 print "Top {} dispatch counters:".format(top_count) 66 print "Top {} dispatch counters:".format(top_count)
67 for source, destination, counter in top_counters: 67 for source, destination, counter in top_counters:
68 print "{:>12d}\t{} -> {}".format(counter, source, destination) 68 print "{:>12d}\t{} -> {}".format(counter, source, destination)
69 69
70 70
71 def find_top_dispatch_sources(dispatches_table, top_count):
72 def dispatch_sources_counters_generator():
73 for source, counters_from_source in dispatches_table.items():
74 yield source, sum(counters_from_source.values())
75
76 return heapq.nlargest(top_count, dispatch_sources_counters_generator(),
rmcilroy 2016/04/13 08:45:54 I would probably default to printing all the bytec
Stefano Sanfilippo 2016/04/13 10:19:38 Done.
77 key=lambda x: x[1])
78
79
80 def print_top_dispatch_sources(dispatches_table, top_count):
81 top_dispatch_sources = find_top_dispatch_sources(dispatches_table, top_count)
82 print "Top {} dispatch sources:".format(top_count)
rmcilroy 2016/04/13 08:45:54 Sources is not a good name since it isn't clear wh
Stefano Sanfilippo 2016/04/13 10:19:37 Done.
83 for source, counter in top_dispatch_sources:
84 print "{:>12d}\t{}".format(counter, source)
85
86
71 def build_counters_matrix(dispatches_table): 87 def build_counters_matrix(dispatches_table):
72 labels = sorted(dispatches_table.keys()) 88 labels = sorted(dispatches_table.keys())
73 89
74 counters_matrix = numpy.empty([len(labels), len(labels)], dtype=int) 90 counters_matrix = numpy.empty([len(labels), len(labels)], dtype=int)
75 for from_index, from_name in enumerate(labels): 91 for from_index, from_name in enumerate(labels):
76 current_row = dispatches_table[from_name]; 92 current_row = dispatches_table[from_name];
77 for to_index, to_name in enumerate(labels): 93 for to_index, to_name in enumerate(labels):
78 counters_matrix[from_index, to_index] = current_row.get(to_name, 0) 94 counters_matrix[from_index, to_index] = current_row.get(to_name, 0)
79 95
80 # Reverse y axis for a nicer appearance 96 # Reverse y axis for a nicer appearance
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 figure, axis = pyplot.subplots() 195 figure, axis = pyplot.subplots()
180 plot_dispatches_table(dispatches_table, figure, axis) 196 plot_dispatches_table(dispatches_table, figure, axis)
181 197
182 if program_options.interactive: 198 if program_options.interactive:
183 pyplot.show() 199 pyplot.show()
184 else: 200 else:
185 figure.set_size_inches(program_options.plot_size, 201 figure.set_size_inches(program_options.plot_size,
186 program_options.plot_size) 202 program_options.plot_size)
187 pyplot.savefig(program_options.output_filename) 203 pyplot.savefig(program_options.output_filename)
188 else: 204 else:
205 print_top_dispatch_sources(dispatches_table, program_options.top_count)
rmcilroy 2016/04/13 08:45:54 Please make this a separate option (and be the def
Stefano Sanfilippo 2016/04/13 10:19:37 Done.
206 print # just a blank line
189 print_top_counters(dispatches_table, program_options.top_count) 207 print_top_counters(dispatches_table, program_options.top_count)
190 208
191 209
192 if __name__ == "__main__": 210 if __name__ == "__main__":
193 main() 211 main()
OLDNEW
« no previous file with comments | « no previous file | tools/ignition/bytecode_dispatches_report_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698