Time comparation of Intersection Methods
JSLitmus Test
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 IndexOfLoop(x, y){
var ret = [];
for (var i = 0; i < x.length; i++) {
if (y.indexOf(x[i]) !== -1) {
ret.push(i);
}
}
return ret;
}
function IndexOfFilter(x, y){
return x.filter(function (i) { return y.indexOf(i) !== -1; })
}
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 SimpleJsLoops2(x, y){
var ret = [],
xLen = x.length,
yLen = y.length;
for (var i = 0; i < xLen; i++) {
for (var z = 0; z < yLen; 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,...