Files
sdk/pkg/front_end/tool/_fasta/benchmark_visualiser.html
T
Jens Johansen 287ae321a2 [CFE] Experiment with benchmarking
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>
2022-02-04 12:32:59 +00:00

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>