gecko/testing/performance/talos/page_load_test/jss/real-binary-trees-3.html

66 lines
1.5 KiB
HTML

<html><head>
<!-- MOZ_INSERT_CONTENT_HOOK -->
<script src = runner.js></script>
<script>
var onlyName = 'Binary Trees', onlyNum = 8;
function thisTest() {
/* The Great Computer Language Shootout
http://shootout.alioth.debian.org/
contributed by Isaac Gouy */
function TreeNode(left,right,item){
this.left = left;
this.right = right;
this.item = item;
}
TreeNode.prototype.itemCheck = function(){
if (this.left==null) return this.item;
else return this.item + this.left.itemCheck() - this.right.itemCheck();
}
function bottomUpTree(item,depth){
if (depth>0){
return new TreeNode(
bottomUpTree(2*item-1, depth-1)
,bottomUpTree(2*item, depth-1)
,item
);
}
else {
return new TreeNode(null,null,item);
}
}
startTest("real-binary-trees");
var ret;
for ( var n = 2; n <= 8; n *= 2 ) (function(n){
test( "Binary Trees", n, function(){
var minDepth = 4;
var maxDepth = Math.max(minDepth + 2, n);
var stretchDepth = maxDepth + 1;
var check = bottomUpTree(0,stretchDepth).itemCheck();
var longLivedTree = bottomUpTree(0,maxDepth);
for (var depth=minDepth; depth<=maxDepth; depth+=2){
var iterations = 1 << (maxDepth - depth + minDepth);
check = 0;
for (var i=1; i<=iterations; i++){
check += bottomUpTree(i,depth).itemCheck();
check += bottomUpTree(-i,depth).itemCheck();
}
}
ret = longLivedTree.itemCheck();
});
})(n);
endTest();
}
</script>
<body onload="thisTest()"></body></html>