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

Unified Diff: tools/android/loading/resource_sack_display.py

Issue 1837193002: Clovis: update resource sack to use new dependency graph. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comments Created 4 years, 9 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 | « tools/android/loading/resource_sack.py ('k') | tools/android/loading/resource_sack_display_unittest.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/android/loading/resource_sack_display.py
diff --git a/tools/android/loading/resource_sack_display.py b/tools/android/loading/resource_sack_display.py
deleted file mode 100644
index 210f4da5c73f2e184140fd6411f1349485642e21..0000000000000000000000000000000000000000
--- a/tools/android/loading/resource_sack_display.py
+++ /dev/null
@@ -1,135 +0,0 @@
-# Copyright 2016 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-"""Utilities for displaying a ResourceSack.
-
-When run standalone, takes traces on the command line and produces a dot file to
-stdout.
-"""
-
-
-def ToDot(sack, output, prune=-1, long_edge_msec=2000):
- """Output as a dot file.
-
- Args:
- sack: (ResourceSack) the sack to convert to dot.
- output: a file-like output stream.
- prune: if positive, prune & coalesce nodes under the specified threshold
- of repeated views, as fraction node views / total graphs. All pruned
- nodes are represented by a single node, and an edge is connected only if
- the view count is greater than 1.
- long_edge_msec: if positive, the definition of a long edge. Long edges are
- distinguished in graph.
- """
- output.write("""digraph dependencies {
- rankdir = LR;
- """)
-
- pruned = set()
- num_graphs = len(sack.graph_info)
- for bag in sack.bags:
- if prune > 0 and float(len(bag.graphs)) / num_graphs < prune:
- pruned.add(bag)
- continue
- output.write('%d [label="%s (%d)\n(%d, %d)\n(%.2f, %.2f)" shape=%s; '
- 'style=filled; fillcolor=%s];\n' % (
- bag.Index(), bag.label, len(bag.graphs),
- min(bag.total_costs), max(bag.total_costs),
- min(bag.relative_costs), max(bag.relative_costs),
- _CriticalToShape(bag),
- _AmountToNodeColor(len(bag.graphs), num_graphs)))
-
- if pruned:
- pruned_index = num_graphs
- output.write('%d [label="Pruned at %.0f%%\n(%d)"; '
- 'shape=polygon; style=dotted];\n' %
- (pruned_index, 100 * prune, len(pruned)))
-
- for bag in sack.bags:
- if bag in pruned:
- for succ in bag.Successors():
- if succ not in pruned:
- output.write('%d -> %d [style=dashed];\n' % (
- pruned_index, succ.Index()))
- for succ in bag.Successors():
- if succ in pruned:
- if len(bag.successor_sources[succ]) > 1:
- output.write('%d -> %d [label="%d"; style=dashed];\n' % (
- bag.Index(), pruned_index, len(bag.successor_sources[succ])))
- else:
- num_succ = len(bag.successor_sources[succ])
- num_long = 0
- for graph, source, target in bag.successor_sources[succ]:
- if graph.EdgeCost(source, target) > long_edge_msec:
- num_long += 1
- if num_long > 0:
- long_frac = float(num_long) / num_succ
- long_edge_style = '; penwidth=%f' % (2 + 6.0 * long_frac)
- if long_frac < 0.75:
- long_edge_style += '; style=dashed'
- else:
- long_edge_style = ''
- min_edge = min(bag.successor_edge_costs[succ])
- max_edge = max(bag.successor_edge_costs[succ])
- output.write('%d -> %d [label="%d\n(%f,%f)"; color=%s %s];\n' % (
- bag.Index(), succ.Index(), num_succ, min_edge, max_edge,
- _AmountToEdgeColor(num_succ, len(bag.graphs)),
- long_edge_style))
-
- output.write('}')
-
-
-def _CriticalToShape(bag):
- frac = float(bag.num_critical) / bag.num_nodes
- if frac < 0.4:
- return 'oval'
- elif frac < 0.7:
- return 'polygon'
- elif frac < 0.9:
- return 'trapezium'
- return 'box'
-
-
-def _AmountToNodeColor(numer, denom):
- if denom <= 0:
- return 'grey72'
- ratio = 1.0 * numer / denom
- if ratio < .3:
- return 'white'
- elif ratio < .6:
- return 'yellow'
- elif ratio < .8:
- return 'orange'
- return 'green'
-
-
-def _AmountToEdgeColor(numer, denom):
- color = _AmountToNodeColor(numer, denom)
- if color == 'white' or color == 'grey72':
- return 'black'
- return color
-
-
-def _Main():
- import json
- import logging
- import sys
-
- import loading_model
- import loading_trace
- import resource_sack
-
- sack = resource_sack.GraphSack()
- for fname in sys.argv[1:]:
- trace = loading_trace.LoadingTrace.FromJsonDict(
- json.load(open(fname)))
- logging.info('Making graph from %s', fname)
- model = loading_model.ResourceGraph(trace, content_lens=None)
- sack.ConsumeGraph(model)
- logging.info('Finished %s', fname)
- ToDot(sack, sys.stdout, prune=.1)
-
-
-if __name__ == '__main__':
- _Main()
« no previous file with comments | « tools/android/loading/resource_sack.py ('k') | tools/android/loading/resource_sack_display_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698