| <html> |
| |
| <head> |
| <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> |
| <script type="text/javascript"> |
| google.charts.load('current', { 'packages': ['corechart'] }); |
| google.charts.setOnLoadCallback(loaded); |
| |
| function drawChart() { |
| var useLogarithmic = document.getElementById('chartLog').checked; |
| try { |
| var benchmarkdata = JSON.parse(document.getElementById('jsondata').value); |
| } |
| catch (e) { |
| document.getElementById('chart_div').innerHTML = "BAD JSON #0!" + e.message; |
| return; |
| } |
| var data = new google.visualization.DataTable(); |
| data.addColumn('string', 'Phase'); |
| |
| var countBenchmarks = benchmarkdata.benchmarkers.length; |
| for (var i = 0; i < countBenchmarks; i++) { |
| data.addColumn('number', 'Run #' + (i + 1)); |
| } |
| |
| var phaseCount = benchmarkdata.benchmarkers[0].phases.length; |
| for (var i = 0; i < countBenchmarks; i++) { |
| if (benchmarkdata.benchmarkers[i].phases.length != phaseCount) { |
| document.getElementById('chart_div').innerHTML = "BAD JSON #1!"; |
| return; |
| } |
| } |
| |
| for (var j = 0; j < phaseCount; j++) { |
| var rowArray = []; |
| rowArray.push(benchmarkdata.benchmarkers[0].phases[j].phase); |
| for (var i = 0; i < countBenchmarks; i++) { |
| rowArray.push(benchmarkdata.benchmarkers[i].phases[j].runtime); |
| if (benchmarkdata.benchmarkers[i].phases[j].phase != rowArray[0]) { |
| document.getElementById('chart_div').innerHTML = "BAD JSON #2!"; |
| return; |
| } |
| } |
| data.addRow(rowArray); |
| } |
| |
| if (useLogarithmic) { |
| var options = { |
| vAxis: { |
| scaleType: 'log' |
| } |
| }; |
| } else { |
| var options = {}; |
| } |
| |
| var chart = new google.visualization.ColumnChart(document.getElementById('chart_div')); |
| chart.draw(data, options); |
| } |
| |
| function loaded() { |
| document.getElementById('chartitbutton').disabled = false; |
| } |
| </script> |
| </head> |
| |
| <body> |
| <textarea id="jsondata" rows="20" cols="80"></textarea> |
| <br /> |
| <input type="checkbox" id="chartLog"> |
| <label for="chartLog"> Use logarithmic scale</label> |
| <br /> |
| |
| <button id="chartitbutton" onclick="drawChart()" disabled>Chart it!</button> |
| <div id="chart_div" style="width:1200; height:900"></div> |
| </body> |
| |
| </html> |