| Index: dashboard/build-comparison.html
|
| diff --git a/dashboard/build-comparison.html b/dashboard/build-comparison.html
|
| deleted file mode 100644
|
| index 8570a1455c7cc321d3ac7db8cd849c6c4f33594e..0000000000000000000000000000000000000000
|
| --- a/dashboard/build-comparison.html
|
| +++ /dev/null
|
| @@ -1,373 +0,0 @@
|
| -<html>
|
| -
|
| -<!--
|
| - Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| - Use of this source code is governed by a BSD-style license that can be
|
| - found in the LICENSE file.
|
| --->
|
| -
|
| -<!--
|
| -
|
| - This page plots data loaded from Chrome performance tests listed in
|
| - chrome_config.js for specified version numbers in URL parameter.
|
| -
|
| - Example:
|
| - build-comparison.html?versions=17.1.963.11,17.1.963.12,17.1.963.13
|
| --->
|
| -<head>
|
| -<style type="text/css">
|
| -{
|
| - margin: 0;
|
| - padding: 0;
|
| - list-style-type: none;
|
| -}
|
| -body {
|
| - font-family: Helvetica, Arial, sans-serif;
|
| - color: #333;
|
| -}
|
| -a {
|
| - color: #2D7BB2;
|
| - text-decoration: none;
|
| - font-weight: bold;
|
| -}
|
| -a:hover {
|
| - color: #333;
|
| -}
|
| -h2, h3, h4 {
|
| - clear: both;
|
| - margin: 0 0 0.6em 0;
|
| -}
|
| -h3 {
|
| - color: #666;
|
| -}
|
| -button {
|
| - padding: 2px 6px 3px;
|
| -}
|
| -label {
|
| - font-size: 11px;
|
| - color: #666;
|
| -}
|
| -</style>
|
| -
|
| -<title>Chrome Perf Platform Comparison</title>
|
| -<script src="chrome_config.js"></script>
|
| -<script src="ui/js/common.js"></script>
|
| -<script src="https://www.google.com/jsapi"></script>
|
| -
|
| -<script type="text/javascript">
|
| -var params = ParseParams();
|
| -var versions = {};
|
| -var allRowData = [];
|
| -var isDataFetched = false;
|
| -
|
| -google.load("visualization", "1", {packages:["corechart"]});
|
| -google.setOnLoadCallback(init);
|
| -
|
| -function init() {
|
| - if (params.versions) {
|
| - split_ver = params.versions.split(/[\s,]+/);
|
| - for (var i = 0; i < split_ver.length; i++)
|
| - versions[split_ver[i]] = 1;
|
| - FetchGraphList();
|
| -
|
| - document.getElementById('versions').defaultValue = params.versions;
|
| - }
|
| -}
|
| -
|
| -/**
|
| - * On plot clicked, parse text area for version numbers and plot.
|
| - */
|
| -function setVersion() {
|
| - var ver = document.getElementById('versions').value;
|
| - clearDiv('output');
|
| - clearDiv('log');
|
| - if (ver) {
|
| - versions = {};
|
| - split_ver = ver.split(/[\s,\n]+/);
|
| - for (var i = 0; i < split_ver.length; i++)
|
| - versions[split_ver[i]] = 1;
|
| - if (isDataFetched)
|
| - plot();
|
| - else
|
| - FetchGraphList();
|
| -
|
| - var stateObj = { foo: 'bar'};
|
| - history.pushState(stateObj, "", MakeURL({'versions': ver}));
|
| - }
|
| -}
|
| -
|
| -/**
|
| - * Fetch all the graphs.dat file on all systems and test directories.
|
| - */
|
| -function FetchGraphList() {
|
| - // Fetch graphs.dat from all machines and tests.
|
| - var graphFiles = [];
|
| - var graphPaths = [];
|
| - for (var system in ChromeConfig.systemTitles) {
|
| - for (var testName in ChromeConfig.testTitles) {
|
| - var path = '../' + system + '/' + testName;
|
| - graphFiles.push(path + '/' + 'graphs.dat');
|
| - var p = {
|
| - path: path,
|
| - testName: testName,
|
| - machine: ChromeConfig.systemTitles[system],
|
| - }
|
| - graphPaths.push(p);
|
| - }
|
| - }
|
| - new FetchList(graphFiles, onGraphListReceived, graphPaths);
|
| -}
|
| -
|
| -/**
|
| - * Fetch all *-summary.dat.
|
| - */
|
| -function onGraphListReceived(data, graphPaths) {
|
| - // Select graph from graph list.
|
| - var summaryFiles = [];
|
| - for (var i = 0; i < data.length; i++) {
|
| - var graphList = JsonToJs(data[i]);
|
| - if (graphList) {
|
| - for (var j = 0; j < graphList.length; j++) {
|
| - if (graphList[j].important) {
|
| - var gList = graphList[j];
|
| - summaryFiles.push(graphPaths[i].path + '/' + graphList[j].name +
|
| - '-summary.dat');
|
| - var row = {
|
| - machine: graphPaths[i].machine,
|
| - units: graphList[j].units,
|
| - testName: graphPaths[i].testName,
|
| - graphName: graphList[j].graphName,
|
| - }
|
| - allRowData.push(row);
|
| - break;
|
| - }
|
| - }
|
| - }
|
| - }
|
| - new FetchList(summaryFiles, onGraphDataReceived);
|
| -}
|
| -
|
| -function onGraphDataReceived(data) {
|
| - // Parse the summary data file.
|
| - for (var i = 0; i < data.length; i++) {
|
| - if (data[i]) {
|
| - var rows = new Rows(data[i]);
|
| - allRowData[i].rows = rows;
|
| - }
|
| - }
|
| - isDataFetched = true;
|
| - plot();
|
| -}
|
| -
|
| -/**
|
| - * Order data and add charts.
|
| - */
|
| -function plot() {
|
| - // Order row data by test names and machine names.
|
| - var graphData = {};
|
| - var foundVersions = {};
|
| - for (var i = 0; i < allRowData.length; i++) {
|
| - var rowData = allRowData[i];
|
| - var rows = rowData.rows;
|
| - if (!rows)
|
| - continue;
|
| - for (var j = 0; j < rows.length; j++) {
|
| - var row = rows.get(j);
|
| - if (!row)
|
| - continue;
|
| - if (row.version in versions) {
|
| - foundVersions[row.version] = 1;
|
| - var traces = row['traces'];
|
| - if (!graphData[rowData.testName])
|
| - graphData[rowData.testName] = {};
|
| - if (!graphData[rowData.testName][rowData.machine]) {
|
| - var data = {
|
| - traceList: [traces],
|
| - versions: [row.version],
|
| - units: rowData.units,
|
| - }
|
| - graphData[rowData.testName][rowData.machine] = data;
|
| - } else {
|
| - var data = graphData[rowData.testName][rowData.machine];
|
| - data.traceList.push(traces);
|
| - data.versions.push(row.version);
|
| - }
|
| - }
|
| - }
|
| - }
|
| -
|
| - // Prepare traces for plotting.
|
| - for (var testName in graphData) {
|
| - var dataByMachine = graphData[testName];
|
| - for (var machine in dataByMachine) {
|
| - var data = dataByMachine[machine];
|
| - var traceNames = {};
|
| - for (var i = 0; i < data.traceList.length; i++) {
|
| - for (var traceName in data.traceList[i]) {
|
| - traceNames[traceName] = 1;
|
| - }
|
| - }
|
| -
|
| - var traceNameList = [];
|
| - for (var traceName in traceNames)
|
| - traceNameList.push(traceName);
|
| -
|
| - var traces = [];
|
| - for (var i = 0; i < data.traceList.length; i++) {
|
| - trace = [data.versions[i]];
|
| - for (var traceName in traceNames) {
|
| - if (data.traceList[i][traceName])
|
| - trace.push(parseFloat(data.traceList[i][traceName][0]));
|
| - else
|
| - trace.push(0);
|
| - }
|
| - traces.push(trace);
|
| - }
|
| - data.traces = traces;
|
| - data.traceNames = traceNameList;
|
| - }
|
| - }
|
| -
|
| - var versionExist = false;
|
| - for (version in versions) {
|
| - if (version) {
|
| - if (!(version in foundVersions))
|
| - reportError('No data for: ' + version);
|
| - else
|
| - versionExist = true;
|
| - }
|
| - }
|
| - if (!versionExist)
|
| - return;
|
| -
|
| - var output = document.getElementById('output');
|
| - var htmlTable = new HTMLTable(output);
|
| -
|
| - // Add machine titles.
|
| - var machineNames = [];
|
| - for (var system in ChromeConfig.systemTitles) {
|
| - htmlTable.addHeader(ChromeConfig.systemTitles[system]);
|
| - machineNames.push(ChromeConfig.systemTitles[system]);
|
| - }
|
| -
|
| - // Plot graph for each test and machine.
|
| - for (var testName in graphData) {
|
| - var dataByMachine = graphData[testName];
|
| - htmlTable.addRow();
|
| -
|
| - for (var i = 0; i < machineNames.length; i++) {
|
| - var data = dataByMachine[machineNames[i]];
|
| - if (data) {
|
| - var dataTable = new google.visualization.DataTable();
|
| - dataTable.addColumn('string', 'Version');
|
| -
|
| - for (var j = 0; j < data.traceNames.length; j++)
|
| - dataTable.addColumn('number', data.traceNames[j]);
|
| - dataTable.addRows(data.traces);
|
| -
|
| - var options = {
|
| - width: 400, height: 240,
|
| - title: ChromeConfig.testTitles[testName],
|
| - vAxis: {title: data.units, titleTextStyle: {color: 'red'}},
|
| - colors:['#0000FF','#E69F00'],
|
| - };
|
| -
|
| - var charDiv = document.createElement('div');
|
| - htmlTable.addElement(charDiv);
|
| - var chart = new google.visualization.ColumnChart(charDiv);
|
| - chart.draw(dataTable, options);
|
| - } else {
|
| - var charDiv = document.createElement('div');
|
| - htmlTable.addElement(charDiv);
|
| - }
|
| - }
|
| - }
|
| -}
|
| -
|
| -/**
|
| - * Class for creating HTML table.
|
| - * @constructor
|
| - */
|
| -function HTMLTable(div) {
|
| - this.div_ = div;
|
| - this.table_ = document.createElement('table');
|
| - this.div_.appendChild(this.table_);
|
| - this.tr_ = null;
|
| - this.headerTr_ = null;
|
| -}
|
| -
|
| -HTMLTable.prototype.addHeader = function(title) {
|
| - if (!this.headerTr_) {
|
| - this.headerTr_ = document.createElement('tr');
|
| - this.table_.appendChild(this.headerTr_);
|
| - }
|
| - var th = document.createElement('th');
|
| - this.headerTr_.appendChild(th);
|
| - th.innerHTML = title;
|
| -}
|
| -
|
| -HTMLTable.prototype.addRow = function() {
|
| - this.tr_ = document.createElement('tr');
|
| - this.table_.appendChild(this.tr_);
|
| -}
|
| -
|
| -HTMLTable.prototype.addElement = function(div) {
|
| - var td = document.createElement('td');
|
| - this.tr_.appendChild(td);
|
| - td.appendChild(div);
|
| -}
|
| -
|
| -function JsonToJs(data) {
|
| - return eval('(' + data + ')');
|
| -}
|
| -
|
| -function cleanId(str) {
|
| - return str.replace(/\s/g, '_').toLowerCase();
|
| -}
|
| -
|
| -function clearDiv(id) {
|
| - var div = document.getElementById(id);
|
| - while (div.hasChildNodes()) {
|
| - div.removeChild(div.lastChild);
|
| - }
|
| -}
|
| -
|
| -function reportError(error) {
|
| - document.getElementById('log').innerHTML = '<p>' + error + '</p>';
|
| -}
|
| -
|
| -/**
|
| - * Encapsulates a *-summary.dat file.
|
| - * @constructor
|
| - */
|
| -function Rows(data) {
|
| - this.rows_ = (data) ? data.split('\n') : [];
|
| - this.length = this.rows_.length;
|
| -}
|
| -
|
| -/**
|
| - * Returns the row at the given index.
|
| - */
|
| -Rows.prototype.get = function(i) {
|
| - if (!this.rows_[i].length) return null;
|
| - var row = JsonToJs(this.rows_[i]);
|
| - row.revision = isNaN(row['rev']) ? row['rev'] : parseInt(row['rev']);
|
| - row.version = row['ver'];
|
| - return row;
|
| -};
|
| -</script>
|
| -</head>
|
| -<body>
|
| - <br />
|
| - <center>
|
| - <h2>Chrome Perf</h2>
|
| - </center>
|
| - <p><b>Build versions: </b><br/>
|
| - <label for="direction">Enter version numbers with comma delimiter.</label>
|
| - <br/>
|
| - <textarea cols="40" rows="5" id="versions"></textarea>
|
| - <p><button value="Plot" onClick="setVersion()">Plot</button></p>
|
| - <pre id="log"></pre>
|
| - <div id="output"></div>
|
| -</body>
|
| -</html>
|
|
|