287ae321a2
Run as for instance ``` pkg/front_end/tool/fasta -Dbenchmark=true -Diterations=3 compile pkg/compiler/bin/dart2js.dart ``` This will set benchmarking to true, do 3 iterations and eventually print the benchmarking data as json. That can then be pasted into the attempted visualizer. This is a first stab, and might be replaced by something else down the line. Change-Id: I8cb3a6bcf8717adf089d25a0fb432cb0b286aaa6 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/231441 Reviewed-by: Johnni Winther <johnniwinther@google.com> Commit-Queue: Jens Johansen <jensj@google.com>
79 lines
2.4 KiB
HTML
79 lines
2.4 KiB
HTML
<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>
|