Time comparation of Intersection Methods
JSLitmus Test
by neoswf
HTML
<script src="http://www.broofa.com/Tools/JSLitmus/JSLitmus.js"></script>
<script src="http://underscorejs.org/underscore-min.js"></script>
<h1>Time comparation of Intersection Methods</h1>
<a href="http://www.broofa.com/Tools/JSLitmus/">banchmark url reference</a>
CSS
body{padding:1em;font-family:tahoma}
h1{font-weight:bold}
a{line-height:3em; font-style:italic}
JavaScript
mainList = [-11, -1, 1, 2, 3, 4, 5, 6, 20, 44, 87, 99, 100];
toSearchList = [-1, 1, 4];
function SimpleJsLoops(x, y){
var ret = [];
for (var i = 0; i < x.length; i++) {
for (var z = 0; z < y.length; z++) {
if (x[i] == y[z]) {
ret.push(i);
break;
}
}
}
return ret;
}
function intersection(x, y) {
x.sort();
y.sort();
var i = j = 0;
var ret = [];
while (i < x.length && j < y.length) {
if (x[i] < y[j]) i++;
else if (y[j] < x[i]) j++;
else {
ret.push(i);
i++, j++;
}
}
return ret;
}
function intersect_safe(a, b)
{
var ai = bi= 0;
var result = [];
while( ai < a.length && bi < b.length ){
if (a[ai] < b[bi] ){ ai++; }
else if (a[ai] > b[bi] ){ bi++; }
else /* they're equal */
{
result.push(ai);
ai++;
bi++;
}
}
return result;
}
var arrayContains = Array.prototype.indexOf ?
function(arr, val) {
return arr.indexOf(val) > -1;
} :
function(arr, val) {
var i = arr.length;
while (i--) {
if (arr[i] === val) {
return true;
}
}
return false;
};
function arrayIntersection() {
var val, arrayCount, firstArray, i, j, intersection = [], missing;
var arrays = Array.prototype.slice.call(arguments);
firstArr = arrays.pop();
if (firstArr) {
j = firstArr.length;
arrayCount = arrays.length;
while (j--) {
val = firstArr[j];
missing = false;
i = arrayCount;
idx = null;
while (!missing && i--) {
idx = arrays[i].indexOf(val);
if ( !arrayContains(arrays[i], val) ) {
missing = true;
}
}
if (!missing) {
...