| Index: benchmarks/spinning-balls/v.js
|
| ===================================================================
|
| --- benchmarks/spinning-balls/v.js (revision 10000)
|
| +++ benchmarks/spinning-balls/v.js (working copy)
|
| @@ -61,6 +61,7 @@
|
| var sumOfSquaredPauses = 0;
|
| var benchmarkStartTime = void 0;
|
| var benchmarkTimeLimit = void 0;
|
| +var autoScale = void 0;
|
| var pauseDistribution = [];
|
|
|
|
|
| @@ -193,7 +194,7 @@
|
| }
|
|
|
|
|
| -function PausePlot(width, height, size) {
|
| +function PausePlot(width, height, size, scale) {
|
| var canvas = document.createElement("canvas");
|
| canvas.width = this.width = width;
|
| canvas.height = this.height = height;
|
| @@ -201,7 +202,14 @@
|
|
|
| this.ctx = canvas.getContext('2d');
|
|
|
| - this.maxPause = 0;
|
| + if (typeof scale !== "number") {
|
| + this.autoScale = true;
|
| + this.maxPause = 0;
|
| + } else {
|
| + this.autoScale = false;
|
| + this.maxPause = scale;
|
| + }
|
| +
|
| this.size = size;
|
|
|
| // Initialize cyclic buffer for pauses.
|
| @@ -248,18 +256,21 @@
|
|
|
| PausePlot.prototype.draw = function () {
|
| var first = null;
|
| - this.iteratePauses(function (i, v) {
|
| - if (first === null) {
|
| - first = v;
|
| - }
|
| - this.maxPause = Math.max(v, this.maxPause);
|
| - });
|
|
|
| + if (this.autoScale) {
|
| + this.iteratePauses(function (i, v) {
|
| + if (first === null) {
|
| + first = v;
|
| + }
|
| + this.maxPause = Math.max(v, this.maxPause);
|
| + });
|
| + }
|
| +
|
| var dx = this.width / this.size;
|
| var dy = this.height / this.maxPause;
|
|
|
| this.ctx.save();
|
| - this.ctx.clearRect(0, 0, 480, 240);
|
| + this.ctx.clearRect(0, 0, this.width, this.height);
|
| this.ctx.beginPath();
|
| this.ctx.moveTo(1, dy * this.pauses[this.start]);
|
| var p = first;
|
| @@ -414,23 +425,54 @@
|
| }
|
|
|
|
|
| -function renderForm() {
|
| - form = document.createElement("form");
|
| - form.setAttribute("action", "javascript:start()");
|
| - var label = document.createTextNode("Time limit in seconds ");
|
| - var input = document.createElement("input");
|
| - input.setAttribute("id", "timelimit");
|
| - input.setAttribute("value", "60");
|
| - var button = document.createElement("input");
|
| +function Form() {
|
| + function create(tag) { return document.createElement(tag); }
|
| + function text(value) { return document.createTextNode(value); }
|
| +
|
| + this.form = create("form");
|
| + this.form.setAttribute("action", "javascript:start()");
|
| +
|
| + var table = create("table");
|
| + table.setAttribute("style", "margin-left: auto; margin-right: auto;");
|
| +
|
| + function col(a) {
|
| + var td = create("td");
|
| + td.appendChild(a);
|
| + return td;
|
| + }
|
| +
|
| + function row(a, b) {
|
| + var tr = create("tr");
|
| + tr.appendChild(col(a));
|
| + tr.appendChild(col(b));
|
| + return tr;
|
| + }
|
| +
|
| + this.timelimit = create("input");
|
| + this.timelimit.setAttribute("value", "60");
|
| +
|
| + table.appendChild(row(text("Time limit in seconds"), this.timelimit));
|
| +
|
| + this.autoscale = create("input");
|
| + this.autoscale.setAttribute("type", "checkbox");
|
| + this.autoscale.setAttribute("checked", "true");
|
| + table.appendChild(row(text("Autoscale pauses plot"), this.autoscale));
|
| +
|
| + var button = create("input");
|
| button.setAttribute("type", "submit");
|
| button.setAttribute("value", "Start");
|
| - form.appendChild(label);
|
| - form.appendChild(input);
|
| - form.appendChild(button);
|
| - document.body.appendChild(form);
|
| + this.form.appendChild(table);
|
| + this.form.appendChild(button);
|
| +
|
| + document.body.appendChild(this.form);
|
| }
|
|
|
|
|
| +Form.prototype.remove = function () {
|
| + document.body.removeChild(this.form);
|
| +};
|
| +
|
| +
|
| function init() {
|
| livePoints = new PointsList;
|
| dyingPoints = new PointsList;
|
| @@ -442,14 +484,15 @@
|
| div = document.createElement("div");
|
| document.body.appendChild(div);
|
|
|
| - pausePlot = new PausePlot(480, 240, 160);
|
| + pausePlot = new PausePlot(480, autoScale ? 240 : 500, 160, autoScale ? void 0 : 500);
|
| }
|
|
|
| function start() {
|
| - benchmarkTimeLimit = document.getElementById("timelimit").value * 1000;
|
| - document.body.removeChild(form);
|
| + benchmarkTimeLimit = form.timelimit.value * 1000;
|
| + autoScale = form.autoscale.checked;
|
| + form.remove();
|
| init();
|
| render();
|
| }
|
|
|
| -renderForm();
|
| +var form = new Form();
|
|
|