Skip to content

Instantly share code, notes, and snippets.

@ritch
Created May 16, 2012 17:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ritch/2712379 to your computer and use it in GitHub Desktop.
Save ritch/2712379 to your computer and use it in GitHub Desktop.
var data = [];
describe('fast array', function(){
it('setup', function() {
var max = 9 * (1000 * 1000);
while(data.length < max) {
if(data.length === max / 2) data.push(['random', 'random value']);
else data.push(['key', 'value']);
}
data.where = function (fn) {
var res = [];
for(var i = 0; i < this.length; i++) {
var t = this[i];
if(fn(t[0], t[1])) res.push(t);
}
};
// build fast array
var stack = {};
var pointer = 0;
for(var i = 0; i < data.length; i++) {
stack[pointer++] = data[i][0];
stack[pointer++] = data[i][1];
}
data.where2 = function (fn) {
var res = [];
var max = pointer;
var i = 0;
while(true) {
var key = stack[i++];
var value = stack[i++];
if(key === 'random') {
res.push([key, value]);
break;
}
}
};
})
it('inline array', function() {
var res = data.where2(function (k, v) {
return k === 'random';
});
})
it('regular array', function() {
var res = data.where(function (k, v) {
return k === 'random';
});
})
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment