Skip to content

Commit

Permalink
add benchmarks
Browse files Browse the repository at this point in the history
  • Loading branch information
jonschlinkert committed Jan 4, 2015
1 parent c86fc0d commit e7baed6
Show file tree
Hide file tree
Showing 27 changed files with 11,062 additions and 0 deletions.
4 changes: 4 additions & 0 deletions benchmark/cb.js
@@ -0,0 +1,4 @@

module.exports = function(fp) {
return /a\/.*\.txt/.test(fp);
};
30 changes: 30 additions & 0 deletions benchmark/check.js
@@ -0,0 +1,30 @@
'use strict';

var fs = require('fs');
var argv = require('minimist')(process.argv.slice(2));
var chalk = require('chalk');
var path = require('path');
var mm = require('micromatch').makeRe;

var c = argv.c || argv._[0] || '*';
var f = argv.f || argv._[1] || '*';

/**
* Sanity check. run to ensure that
* all fns return a correct result.
*/

fs.readdirSync(__dirname + '/code').forEach(function (fp) {
var fn = require(path.resolve(__dirname, 'code', fp));
var name = path.basename(fp, path.extname(fp));
if (mm(c).test(name) && /\.js/.test(fp)) {

fs.readdirSync(__dirname + '/fixtures').forEach(function (fixture) {
var basename = path.basename(fixture, path.extname(fixture));
if (mm(f).test(basename) && /\.js/.test(fixture)) {
fixture = path.resolve(__dirname, 'fixtures', fixture);
console.log(chalk.bold(name) + ':', fn.apply(null, require(fixture)).length);
}
});
}
});
3 changes: 3 additions & 0 deletions benchmark/code/array-filter.js
@@ -0,0 +1,3 @@
'use strict';

module.exports = require('array-filter');
3 changes: 3 additions & 0 deletions benchmark/code/current.js
@@ -0,0 +1,3 @@
'use strict';

module.exports = require('../..');
13 changes: 13 additions & 0 deletions benchmark/code/for-in.js
@@ -0,0 +1,13 @@
'use strict';

module.exports = function filter(arr, fn) {
var res = [];

for (var i in arr) {
if (fn(arr[i], +i)) {
res.push(arr[i]);
}
}

return res;
};
18 changes: 18 additions & 0 deletions benchmark/code/for-iterator.js
@@ -0,0 +1,18 @@
'use strict';

var iterator = require('make-iterator');

module.exports = function filter(arr, cb, thisArg) {
cb = iterator(cb, thisArg);
var len = arr.length;
var res = [];

for (var i = 0; i < len; i++) {
var ele = arr[i];

if (cb(ele, i)) {
res.push(ele);
}
}
return res;
};
13 changes: 13 additions & 0 deletions benchmark/code/for-splice-clone.js
@@ -0,0 +1,13 @@
'use strict';

module.exports = function filter(arr, cb) {
var len = arr.length;

for (var i = 0; i < len; i++) {
if (!cb(arr[i])) {
arr.splice(i, 1);
}
}

return arr;
};
14 changes: 14 additions & 0 deletions benchmark/code/for-splice-cont.js
@@ -0,0 +1,14 @@
'use strict';

module.exports = function filter(arr, cb) {
var res = arr.slice();

for (var i = arr.length - 1; i >= 0; i--) {
if (cb(arr[i])) {
continue;
}
res.splice(i, 1);
}

return res;
};
13 changes: 13 additions & 0 deletions benchmark/code/for-splice.js
@@ -0,0 +1,13 @@
'use strict';

module.exports = function filter(arr, cb) {
var res = arr.slice();

for (var i = arr.length - 1; i >= 0; i--) {
if (!cb(arr[i])) {
res.splice(i, 1);
}
}

return res;
};
15 changes: 15 additions & 0 deletions benchmark/code/for.js
@@ -0,0 +1,15 @@
'use strict';

module.exports = function filter(arr, cb) {
var len = arr.length;
var res = [];

for (var i = 0; i < len; i++) {
var ele = arr[i];

if (cb(ele, i)) {
res.push(ele);
}
}
return res;
};
5 changes: 5 additions & 0 deletions benchmark/code/native.js
@@ -0,0 +1,5 @@
'use strict';

module.exports = function filter(arr, cb) {
return arr.filter(cb);
};
16 changes: 16 additions & 0 deletions benchmark/code/while-end.js
@@ -0,0 +1,16 @@
'use strict';

module.exports = function filter(arr, cb) {
var res = [];
var len = arr.length;
var i = 0;

while (len--) {
var val = arr[len];
if (!cb(val)) {
continue;
}
res[i++] = val;
}
return res;
};
19 changes: 19 additions & 0 deletions benchmark/code/while-iterator.js
@@ -0,0 +1,19 @@
'use strict';

var iterator = require('make-iterator');

module.exports = function filter(arr, cb, thisArg) {
cb = iterator(cb, thisArg);
var len = arr.length;
var res = [];
var i = 0;

while (len--) {
var ele = arr[i++];

if (cb(ele, i, arr)) {
res.push(ele);
}
}
return res;
};
16 changes: 16 additions & 0 deletions benchmark/code/while-reverse.js
@@ -0,0 +1,16 @@
'use strict';

module.exports = function filter(arr, cb) {
var len = arr.length;
var res = [];
var i = 0;

while (len--) {
var ele = arr[len];

if (cb(ele)) {
res.push(ele);
}
}
return res;
};
15 changes: 15 additions & 0 deletions benchmark/code/while-splice-clone-cont.js
@@ -0,0 +1,15 @@
'use strict';

module.exports = function filter(arr, cb) {
var len = arr.length;
var res = arr.slice();

while (len--) {
if (cb(arr[len])) {
continue;
}
res.splice(len, 1);
}

return res;
};
14 changes: 14 additions & 0 deletions benchmark/code/while-splice-clone.js
@@ -0,0 +1,14 @@
'use strict';

module.exports = function filter(arr, cb) {
var len = arr.length;
var res = arr.slice();

while (len--) {
if (!cb(arr[len])) {
res.splice(len, 1);
}
}

return res;
};
17 changes: 17 additions & 0 deletions benchmark/code/while-splice-cont-iter.js
@@ -0,0 +1,17 @@
'use strict';

var iterator = require('make-iterator');

module.exports = function filter(arr, cb, thisArg) {
cb = iterator(cb, thisArg);
var len = arr.length;

while (len--) {
if (cb(arr[len])) {
continue;
}
arr.splice(len, 1);
}

return arr;
};
14 changes: 14 additions & 0 deletions benchmark/code/while-splice-cont.js
@@ -0,0 +1,14 @@
'use strict';

module.exports = function filter(arr, cb) {
var len = arr.length;

while (len--) {
if (cb(arr[len])) {
continue;
}
arr.splice(len, 1);
}

return arr;
};
11 changes: 11 additions & 0 deletions benchmark/code/while-splice-cont2.js
@@ -0,0 +1,11 @@
'use strict';

module.exports = function filter(arr, cb) {
var len = arr.length;

while (len--) {
cb(arr[len]) || arr.splice(len, 1);
}

return arr;
};
13 changes: 13 additions & 0 deletions benchmark/code/while-splice.js
@@ -0,0 +1,13 @@
'use strict';

module.exports = function filter(arr, cb) {
var len = arr.length;

while (len--) {
if (!cb(arr[len])) {
arr.splice(len, 1);
}
}

return arr;
};
16 changes: 16 additions & 0 deletions benchmark/code/while.js
@@ -0,0 +1,16 @@
'use strict';

module.exports = function filter(arr, cb) {
var len = arr.length;
var res = [];
var i = 0;

while (len--) {
var ele = arr[i++];

if (cb(ele, i, arr)) {
res.push(ele);
}
}
return res;
};

0 comments on commit e7baed6

Please sign in to comment.