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

Unified Diff: tools/ignition/bytecode_dispatches_report.py

Issue 1979233002: [Interpreter] List top dispatch sources and destinations for a given Ignition bytecode. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Rename flag. Created 4 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tools/ignition/bytecode_dispatches_report_test.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/ignition/bytecode_dispatches_report.py
diff --git a/tools/ignition/bytecode_dispatches_report.py b/tools/ignition/bytecode_dispatches_report.py
index ae169135e91e3a33fbd8e895d300f93d7969d17d..1c140141f0dd3904a271001627372abaf072c639 100755
--- a/tools/ignition/bytecode_dispatches_report.py
+++ b/tools/ignition/bytecode_dispatches_report.py
@@ -40,6 +40,9 @@ examples:
# Open the heatmap in an interactive viewer
$ tools/ignition/bytecode_dispatches_report.py -p -i
+
+ # Display the top 5 sources and destinations of dispatches to/from LdaZero
+ $ tools/ignition/bytecode_dispatches_report.py -f LdaZero -n 5
"""
__COUNTER_BITS = struct.calcsize("P") * 8 # Size in bits of a pointer
@@ -87,6 +90,32 @@ def print_top_bytecodes(dispatches_table):
print "{:>12d}\t{}".format(counter, bytecode)
+def find_top_dispatch_sources(dispatches_table, destination, top_count):
+ def source_counters_generator():
+ for source, table_row in dispatches_table.items():
+ if destination in table_row:
+ yield source, table_row[destination]
+
+ return heapq.nlargest(top_count, source_counters_generator(),
+ key=lambda x: x[1])
+
+
+def print_top_dispatch_sources_and_destinations(dispatches_table, bytecode,
+ top_count):
+ top_sources = find_top_dispatch_sources(dispatches_table, bytecode, top_count)
+ top_destinations = heapq.nlargest(top_count,
+ dispatches_table[bytecode].items(),
+ key=lambda x: x[1])
+
+ print "Top sources of dispatches to {}:".format(bytecode)
+ for source_name, counter in top_sources:
+ print "{:>12d}\t{}".format(counter, source_name)
+
+ print "\nTop destinations of dispatches from {}:".format(bytecode)
+ for destination_name, counter in top_destinations:
+ print "{:>12d}\t{}".format(counter, destination_name)
+
+
def build_counters_matrix(dispatches_table):
labels = sorted(dispatches_table.keys())
@@ -167,11 +196,16 @@ def parse_command_line():
help="print the top bytecode dispatch pairs"
)
command_line_parser.add_argument(
- "--top-bytecode-dispatch-pairs-number", "-n",
+ "--top-entries-count", "-n",
metavar="N",
type=int,
default=10,
- help="print N top bytecode dispatch pairs when running with -t (default 10)"
+ help="print N top entries when running with -t or -f (default 10)"
+ )
+ command_line_parser.add_argument(
+ "--top-dispatches-for-bytecode", "-f",
+ metavar="<bytecode name>",
+ help="print top dispatch sources and destinations to the specified bytecode"
)
command_line_parser.add_argument(
"--output-filename", "-o",
@@ -211,7 +245,11 @@ def main():
pyplot.savefig(program_options.output_filename)
elif program_options.top_bytecode_dispatch_pairs:
print_top_bytecode_dispatch_pairs(
- dispatches_table, program_options.top_bytecode_dispatch_pairs_number)
+ dispatches_table, program_options.top_entries_count)
+ elif program_options.top_dispatches_for_bytecode:
+ print_top_dispatch_sources_and_destinations(
+ dispatches_table, program_options.top_dispatches_for_bytecode,
+ program_options.top_entries_count)
else:
print_top_bytecodes(dispatches_table)
« 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