auto merge of #950 : jdm/servo/matrixmath, r=metajack

This commit is contained in:
bors-servo 2013-09-17 10:24:49 -07:00
commit b77c3eaaa0
2 changed files with 62 additions and 25 deletions

View file

@ -1,14 +1,10 @@
<html>
<body>
<iframe sandbox="allow-scripts" src="test_sandboxed_iframe.html"
style="display:block; border: 1px; width: 400px; height: 400px"
frameborder="yes"
scrolling="yes"></iframe>
hiiiiiiiii
style="display:block; border: 1px; width: 400px; height: 400px">
</iframe>
<iframe sandbox="allow-scripts" src="test_sandboxed_iframe.html"
style="display:block; border: 1px; width: 400px; height: 400px"
frameborder="yes"
scrolling="yes"></iframe>
byeeeeeeeeeeee
style="display:block; border: 1px; width: 400px; height: 400px">
</iframe>
</body>
</html>

View file

@ -1,24 +1,65 @@
<html>
<body>
<script>
var a = 1;
var b = 1;
var c = 2;
var step = 1;
window.alert(Date.now());
var next = new Date();
window.alert(next);
while (true) {
if ((new Date()) >= next) {
window.alert("step " + step + ": " + c);
a = b;
b = c;
c = a + b;
step++;
next = new Date(Date.now() + 500);
}
function Matrix(ary) {
this.mtx = ary
this.height = ary.length;
this.width = ary[0].length;
}
Matrix.prototype.toString = function() {
var s = []
for (var i = 0; i < this.mtx.length; i++)
s.push( this.mtx[i].join(",") );
return s.join("\n");
}
Matrix.prototype.mult = function(other) {
if (this.width != other.height) {
throw "error: incompatible sizes";
}
var result = [];
for (var i = 0; i < this.height; i++) {
result[i] = [];
for (var j = 0; j < other.width; j++) {
var sum = 0;
for (var k = 0; k < this.width; k++) {
sum += this.mtx[i][k] * other.mtx[k][j];
}
result[i][j] = sum;
}
}
return new Matrix(result);
}
function run() {
var now = new Date();
var div = document.getElementsByTagName('div')[0];
var elems = [];
for (var i = 0; i < 900; i++) {
elems.push(i);
}
var outer = [];
for (var i = 0; i < 900; i++) {
outer.push(elems);
}
var a = new Matrix(outer);
var b = new Matrix(outer);
var result = a.mult(b);
var time = (new Date()) - now;
var text = document.createTextNode(time.toString() + 'ms');
var para = document.createElement('p');
para.appendChild(text);
div.appendChild(para);
}
setTimeout(function forever() {
run();
setTimeout(forever, 3000);
}, 0);
</script>
hi there
<p>Time required to multiply two 900x900 matrices:</p>
<div></div>
</body>
</html>