Skip to content

Commit ec3235d

Browse files
committed
add benchmarks
1 parent 156ba7d commit ec3235d

39 files changed

+332
-0
lines changed

benchmark/check.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
'use strict';
2+
3+
var chalk = require('chalk');
4+
var path = require('path');
5+
var glob = require('glob');
6+
7+
/**
8+
* Sanity check. Run to ensure that all fns return the same result.
9+
*/
10+
11+
var fixtures = glob.sync(__dirname + '/fixtures/*.js');
12+
13+
glob.sync(__dirname + '/code/*.js').forEach(function (fp) {
14+
var fn = require(path.resolve(__dirname, 'code', fp));
15+
var name = path.basename(fp, path.extname(fp));
16+
if (/\.js/.test(fp) && /^(new|re).*/.test(name)) {
17+
18+
fixtures.forEach(function (fixture) {
19+
if (/^5\.js/.test(path.basename(fixture))) {
20+
console.log(chalk.bold(name) + ':', fn.apply(fn, require(fixture)));
21+
}
22+
});
23+
}
24+
});

benchmark/code/array-map-call.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
'use strict';
2+
3+
module.exports = function repeat(ele, num) {
4+
return Array.prototype.map.call([] + Array(num + 1), function () {
5+
return ele;
6+
});
7+
};

benchmark/code/array-map-valueOf.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
'use strict';
2+
3+
module.exports = function repeat(ele, num) {
4+
return Array.apply(null, Array(num)).map(String.prototype.valueOf, ele);
5+
};

benchmark/code/current.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module.exports = require('../..');

benchmark/code/for-concat.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
'use strict';
2+
3+
module.exports = function repeat(ele, num) {
4+
var arr = [];
5+
6+
for (var i = 0; i < num; i++) {
7+
arr = arr.concat(ele);
8+
}
9+
10+
return arr;
11+
};

benchmark/code/for-join-1.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
'use strict';
2+
3+
module.exports = function repeat(ele, num) {
4+
var arr = [];
5+
6+
for (; 0 < num; num -= 1, arr[num] = ele);
7+
num++;
8+
9+
return arr;
10+
};

benchmark/code/for-join-2.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
'use strict';
2+
3+
module.exports = function repeat(ele, num) {
4+
var arr = [];
5+
6+
for (; 0 < num; arr[--num] = ele);
7+
8+
return arr;
9+
};

benchmark/code/for-length.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
'use strict';
2+
3+
module.exports = repeat;
4+
5+
function repeat(ele, num) {
6+
if (num === 0) return [];
7+
8+
var res = [ele];
9+
var len = res.length;
10+
11+
if (len < num) {
12+
for (var i = num - 1 - len; i >= 0; i--) {
13+
res[i + len] = res[i % len];
14+
}
15+
}
16+
return res;
17+
}

benchmark/code/for-new-array-1.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
module.exports = repeat;
2+
3+
function repeat(ele, num) {
4+
var arr = new Array(num);
5+
6+
for (var i = 0; i < num; i++) {
7+
arr[i] = ele;
8+
}
9+
10+
return arr;
11+
}

benchmark/code/for-new-array-2.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
module.exports = repeat;
2+
3+
function repeat(ele, num) {
4+
var arr = new Array(num);
5+
6+
for (var i = num - 1; i >= 0; i--) {
7+
arr[i] = ele;
8+
}
9+
10+
return arr;
11+
}

0 commit comments

Comments
 (0)