diff options
author | Josh Blum | 2013-03-05 01:55:38 -0600 |
---|---|---|
committer | Josh Blum | 2013-03-05 01:55:38 -0600 |
commit | 9f7169ecd0c8349fc33ad933c9dc5f23ac538146 (patch) | |
tree | 1c71b30ca2a20dd94224f89cd14ad059f8cac7be /python/gras | |
parent | 91241f9273fa2b39d9cdb6958710b808f13cb48f (diff) | |
download | sandhi-9f7169ecd0c8349fc33ad933c9dc5f23ac538146.tar.gz sandhi-9f7169ecd0c8349fc33ad933c9dc5f23ac538146.tar.bz2 sandhi-9f7169ecd0c8349fc33ad933c9dc5f23ac538146.zip |
stats: added comparison chart
Diffstat (limited to 'python/gras')
-rw-r--r-- | python/gras/stats/charts.js | 128 | ||||
-rw-r--r-- | python/gras/stats/main.css | 5 | ||||
-rw-r--r-- | python/gras/stats/main.html | 9 | ||||
-rw-r--r-- | python/gras/stats/main.js | 2 | ||||
-rw-r--r-- | python/gras/stats/utils.js | 15 |
5 files changed, 108 insertions, 51 deletions
diff --git a/python/gras/stats/charts.js b/python/gras/stats/charts.js index 5f0f65c..0fb6952 100644 --- a/python/gras/stats/charts.js +++ b/python/gras/stats/charts.js @@ -1,13 +1,6 @@ /*********************************************************************** - * charts and visualization stuff + * Throughput chart **********************************************************************/ - -var gras_animate_show_hide = function(elem, show) -{ - if (show) elem.slideDown("fast"); - else elem.slideUp("fast"); -} - var gras_setup_overall_chart = function(registry) { var div = $('#overall_chart:first'); @@ -16,6 +9,84 @@ var gras_setup_overall_chart = function(registry) registry.overall_chart = chart; } +var gras_update_throughput_chart = function(registry) +{ + if (registry.history.length == 1) + { + var id = $('gras_stats:first', registry.history[0]).attr('id'); + $('h1:first').append(' - ' + id); + gras_setup_individual_charts(registry); + return; + } + if (registry.history.length < 2) return; + + var ids = new Array(); + $.each(registry.getBlockIds(), function(index, id) + { + if (registry.block_enables[id]) ids.push(id); + }); + + var data_set = [['Throughput'].concat(ids)]; + for (var i = Math.max(registry.history.length-10, 1); i < registry.history.length; i++) + { + var row = new Array(); + row.push(i.toString()); + for (var j = 0; j < ids.length; j++) + { + row.push(gras_extract_throughput_delta(registry.history[i-1], registry.history[i], ids[j])/1e6); + } + data_set.push(row); + } + + var chart_data = google.visualization.arrayToDataTable(data_set); + var options = { + width:$('#page').width()*0.9, + height:'250', + chartArea:{left:0,top:0,right:0,bottom:0,width:"100%",height:"85%"}, + legend: {'position': 'bottom'}, + }; + registry.overall_chart.draw(chart_data, options); +} + +/*********************************************************************** + * Overhead comparison chart + **********************************************************************/ +var gras_setup_overall_chart_pie = function(registry) +{ + var div = $('#overall_chart_pie:first'); + var td = $('td:last', div); + var chart = new google.visualization.PieChart(td.get(0)); + registry.overall_chart_pie = chart; +} + +var gras_update_time_compare_chart = function(registry) +{ + var point = registry.history[registry.history.length-1]; + var data_set = new Array(); + data_set.push(['Task', 'Percent']); + $.each(registry.getBlockIds(), function(index, id) + { + if (registry.block_enables[id]) + { + var percents = gras_extract_percent_times(point, id); + data_set.push([id, percents['total']]); + } + }); + + var data = google.visualization.arrayToDataTable(data_set) + + var options = { + width:$('#page').width()/5, + chartArea:{left:5,top:0,right:5,bottom:0,width:"100%",height:"100%"}, + }; + + var chart = registry.overall_chart_pie; + chart.draw(data, options); +} + +/*********************************************************************** + * Block handler breakdown chart + **********************************************************************/ var gras_setup_per_block_enable_checkbox = function(elem, id, registry) { $(elem).append('<label>' + id + '</label>'); @@ -69,7 +140,6 @@ var gras_setup_individual_charts = function(registry) config = $('td:last', div); } }); - } var gras_update_per_block_chart = function(id, registry) @@ -102,43 +172,3 @@ var gras_update_per_block_charts = function(registry) gras_update_per_block_chart(id, registry); }); } - -var gras_update_throughput_chart = function(registry) -{ - if (registry.history.length == 1) - { - var id = $('gras_stats:first', registry.history[0]).attr('id'); - $('h1:first').append(' - ' + id); - gras_setup_individual_charts(registry); - return; - } - if (registry.history.length < 2) return; - - var ids = new Array(); - $.each(registry.getBlockIds(), function(index, id) - { - if (registry.block_enables[id]) ids.push(id); - }); - - var data_set = [['Throughput'].concat(ids)]; - for (var i = Math.max(registry.history.length-10, 1); i < registry.history.length; i++) - { - var row = new Array(); - row.push(i.toString()); - for (var j = 0; j < ids.length; j++) - { - row.push(gras_extract_throughput_delta(registry.history[i-1], registry.history[i], ids[j])/1e6); - } - data_set.push(row); - } - - var chart_data = google.visualization.arrayToDataTable(data_set); - var options = { - width:$('#page').width()*0.9, - height:'250', - chartArea:{left:0,top:0,right:0,bottom:0,width:"100%",height:"85%"}, - legend: {'position': 'bottom'}, - }; - registry.overall_chart.draw(chart_data, options); - -} diff --git a/python/gras/stats/main.css b/python/gras/stats/main.css index 84023fe..43ecae1 100644 --- a/python/gras/stats/main.css +++ b/python/gras/stats/main.css @@ -10,6 +10,11 @@ color:black; background-color:white; } +#overall_chart_pie table +{ +float:left; +} + #per_block_charts table { float:left; diff --git a/python/gras/stats/main.html b/python/gras/stats/main.html index 4032d79..9217847 100644 --- a/python/gras/stats/main.html +++ b/python/gras/stats/main.html @@ -46,8 +46,15 @@ </tr> </table> </div> + <div id="overall_chart_pie"> + <table> + <tr><th>Overhead compare</th></tr> + <tr> + <td></td> + </tr> + </table> + </div> <div id="per_block_charts"> - </div> </body> diff --git a/python/gras/stats/main.js b/python/gras/stats/main.js index 9659024..dc04e73 100644 --- a/python/gras/stats/main.js +++ b/python/gras/stats/main.js @@ -16,6 +16,7 @@ var gras_query_stats = function(registry) { registry.appendPoint(xml); gras_update_throughput_chart(registry); + gras_update_time_compare_chart(registry); gras_update_per_block_charts(registry); } @@ -37,6 +38,7 @@ var gras_stats_main = function() var overall_config = $('#overall_config').get(0); gras_setup_overall_chart(registry); + gras_setup_overall_chart_pie(registry); //init overall config gui element for rate var overall_rate = $('input[name="rate"]', overall_config); diff --git a/python/gras/stats/utils.js b/python/gras/stats/utils.js index de123ff..cb7cbf2 100644 --- a/python/gras/stats/utils.js +++ b/python/gras/stats/utils.js @@ -37,11 +37,24 @@ var gras_extract_throughput = function(point, id) var gras_extract_percent_times = function(point, id) { var block_data = $('block[id="' + id + '"]', point); - return { + var data = { prep: parseInt($('total_time_prep', block_data).text()), work: parseInt($('total_time_work', block_data).text()), post: parseInt($('total_time_post', block_data).text()), input: parseInt($('total_time_input', block_data).text()), output: parseInt($('total_time_output', block_data).text()), }; + var total = 0; + $.each(data, function(key, val) + { + total += val; + }); + data['total'] = total; + return data; +} + +var gras_animate_show_hide = function(elem, show) +{ + if (show) elem.slideDown("fast"); + else elem.slideUp("fast"); } |