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

Unified Diff: tools/deep_memory_profiler/graph.py

Issue 189623009: Make graph tool of dmprof useful (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add policy in graph title Created 6 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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/deep_memory_profiler/graph.py
diff --git a/tools/deep_memory_profiler/graph.py b/tools/deep_memory_profiler/graph.py
index 4d5d3fe7cc244dad9229c2f08a647707d13b1046..543aaf90b4afe0d2acaa82844a9e92b1c0bafa83 100755
--- a/tools/deep_memory_profiler/graph.py
+++ b/tools/deep_memory_profiler/graph.py
@@ -9,60 +9,86 @@ import sys
from string import Template
-_HTML_TEMPLATE = """
-<html>
- <head>
- <script type='text/javascript' src='https://www.google.com/jsapi'></script>
- <script type='text/javascript'>
- google.load('visualization', '1', {packages:['corechart', 'table']});
- google.setOnLoadCallback(drawVisualization);
- function drawVisualization() {
- var data = google.visualization.arrayToDataTable(
- $JSON_ARRAY
- );
+_HTML_TEMPLATE = """<!DOCTYPE html>
+<script src="https://www.google.com/jsapi"></script>
+<script>
+var all_data = $ALL_DATA;
+google.load('visualization', '1', {packages:['corechart', 'table']});
+google.setOnLoadCallback(drawVisualization);
+function drawVisualization() {
+ // Apply policy 'l2' by default.
+ var default_policy = 'l2';
+ document.getElementById(default_policy).style.fontWeight = 'bold';
+ turnOn(default_policy);
+}
- var charOptions = {
- title: 'DMP Graph',
- vAxis: {title: 'Timestamp', titleTextStyle: {color: 'red'}},
- isStacked : true
- };
+function turnOn(policy) {
+ var data = google.visualization.arrayToDataTable(all_data[policy]);
+ var charOptions = {
+ title: 'DMP Graph (Policy: ' + policy + ')',
+ vAxis: {title: 'Timestamp', titleTextStyle: {color: 'red'}},
+ isStacked : true
+ };
+ var chart = new google.visualization.AreaChart(
+ document.getElementById('chart_div'));
+ chart.draw(data, charOptions);
+ var table = new google.visualization.Table(
+ document.getElementById('table_div'));
+ table.draw(data);
+}
- var chart = new google.visualization.BarChart(
- document.getElementById('chart_div'));
- chart.draw(data, charOptions);
-
- var table = new google.visualization.Table(
- document.getElementById('table_div'));
- table.draw(data);
+window.onload = function() {
+ var ul = document.getElementById('policies');
+ for (var i = 0; i < ul.children.length; ++i) {
+ var li = ul.children[i];
+ li.onclick = function() {
+ for (var j = 0; j < ul.children.length; ++j) {
+ var my_li = ul.children[j];
+ my_li.style.fontWeight = 'normal';
}
- </script>
- </head>
- <body>
- <div id='chart_div' style="width: 1024px; height: 800px;"></div>
- <div id='table_div' style="width: 1024px; height: 640px;"></div>
- </body>
-</html>
+ this.style.fontWeight = 'bold';
+ turnOn(this.id);
+ }
+ }
+};
+</script>
+<style>
+#policies li {
+ display: inline-block;
+ padding: 5px 10px;
+}
+</style>
+Click to change an applied policy.
+<ul id="policies">$POLICIES</ul>
+<div id="chart_div" style="width: 1024px; height: 640px;"></div>
+<div id="table_div" style="width: 1024px; height: 640px;"></div>
"""
-def _GenerateGraph(json_data, policy):
- legends = list(json_data['policies'][policy]['legends'])
- legends = ['second'] + legends[legends.index('FROM_HERE_FOR_TOTAL') + 1:
- legends.index('UNTIL_HERE_FOR_TOTAL')]
- data = []
- for snapshot in json_data['policies'][policy]['snapshots']:
- data.append([0] * len(legends))
- for k, v in snapshot.iteritems():
- if k in legends:
- data[-1][legends.index(k)] = v
+def _GenerateGraph(json_data):
+ policies = list(json_data['policies'])
+ policies = "".join(map(lambda x: '<li id="'+x+'">'+x+'</li>', policies))
+
+ all_data = {}
+ for policy in json_data['policies']:
+ legends = list(json_data['policies'][policy]['legends'])
+ legends = ['second'] + legends[legends.index('FROM_HERE_FOR_TOTAL') + 1:
+ legends.index('UNTIL_HERE_FOR_TOTAL')]
+ data = []
+ for snapshot in json_data['policies'][policy]['snapshots']:
+ data.append([0] * len(legends))
+ for k, v in snapshot.iteritems():
+ if k in legends:
+ data[-1][legends.index(k)] = v
+ all_data[policy] = [legends] + data
+
print Template(_HTML_TEMPLATE).safe_substitute(
- {'JSON_ARRAY': json.dumps([legends] + data)})
+ {'POLICIES': policies,
+ 'ALL_DATA': json.dumps(all_data)})
def main(argv):
- _GenerateGraph(json.load(file(argv[1], 'r')), argv[2])
+ _GenerateGraph(json.load(file(argv[1], 'r')))
if __name__ == '__main__':
sys.exit(main(sys.argv))
-
-
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698