Skip to content
This repository has been archived by the owner on Feb 6, 2018. It is now read-only.

Commit

Permalink
bench: use benchmark instead of matcha
Browse files Browse the repository at this point in the history
  • Loading branch information
blond committed Apr 15, 2016
1 parent 21d02fb commit 760e094
Show file tree
Hide file tree
Showing 23 changed files with 74 additions and 90 deletions.
4 changes: 2 additions & 2 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
.nyc_output
node_modules
coverage
benchmark/fixtures/libs/**
benchmark/node_modules/**
bench/fixtures/libs/**
bench/node_modules/**
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.nyc_output
node_modules
coverage
benchmark/fixtures/libs
bench/fixtures/libs
4 changes: 2 additions & 2 deletions .jscs.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ module.exports = {
excludeFiles: [
'node_modules/**',
'coverage/**',
'benchmark/fixtures/libs/**',
'benchmark/node_modules/**'
'bench/fixtures/libs/**',
'bench/node_modules/**'
],
requireSpaceAfterKeywords: ['if', 'else', 'for', 'while', 'do', 'switch', 'return', 'try', 'catch'],
requireSpaceBeforeBlockStatements: true,
Expand Down
File renamed without changes.
File renamed without changes.
13 changes: 13 additions & 0 deletions bench/enb.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
'use strict';

const vow = require('vow');
const Level = require('enb/lib/levels/level');
const LevelPlain = require('enb/lib/levels/level-plain');

module.exports = function run(levels, scheme, done) {
var plain = scheme === 'flat' ? LevelPlain : null;

vow.all(levels.map(function (level) {
return (new Level(level, plain)).load();
})).then(done, done);
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
47 changes: 47 additions & 0 deletions bench/run.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
'use strict';

const Benchmark = require('Benchmark');
const async = require('async');

const fixtures = require('./fixtures');

const walk = require('../lib');
const enb = require('./enb');
const scanl = require('./scan-level');

const cases = [
{ name: 'flat level', levels: fixtures.levels.flat, scheme: 'flat' },
{ name: 'nested level', levels: fixtures.levels.nested, scheme: 'nested' },
{ name: 'bem-bl', levels: fixtures.libs['bem-bl'], scheme: 'nested' },
{ name: 'bem-components', levels: fixtures.libs.o2, scheme: 'nested' }
];

async.eachSeries(cases, function iteratee(item, callback) {
const suite = new Benchmark.Suite(item.name);

suite
.add('bem-walk', deferred => {
walk(item.levels, { defaults: { scheme: item.scheme } })
.resume().on('end', () => deferred.resolve());
}, { defer: true })
.add(' enb', deferred => {
enb(item.levels, item.scheme, () => deferred.resolve());
}, { defer: true })
.add(' scanl', deferred => {
scanl(item.levels, item.scheme, () => deferred.resolve());
}, { defer: true })
.on('start', () => {
console.log(' ' + item.name)
})
.on('cycle', event => {
const target = event.target;
const mean = target.stats.mean * 1000;

console.log(`${target} mean ${mean.toFixed(2)} ms`);
})
.on('complete', () => {
console.log('');
callback();
})
.run();
});
27 changes: 6 additions & 21 deletions benchmark/scan-level.js → bench/scan-level.js
Original file line number Diff line number Diff line change
@@ -1,27 +1,12 @@
var scan = require('scan-level'),
fixtures = require('./fixtures');
var scan = require('scan-level');

suite('scan-level', function () {
set('mintime', 1000);
module.exports = function run(levels, scheme, done) {
var opts = {};

bench('`flat` level', function (done) {
run(fixtures.levels.flat, { scanner: scanSimple }, done);
});

bench('`nested` level', function (done) {
run(fixtures.levels.nested, {}, done);
});

bench('`bem-bl`', function (done) {
run(fixtures.libs['bem-bl'], {}, done);
});

bench('`bem-core` + `bem-components`', function (done) {
run(fixtures.libs.o2, {}, done);
});
});
if (scheme === 'flat') {
opts.scanner = scanSimple;
}

function run(levels, opts, done) {
var n = 0,
l = levels.length;

Expand Down
31 changes: 0 additions & 31 deletions benchmark/bem-walk.js

This file was deleted.

30 changes: 0 additions & 30 deletions benchmark/enb.js

This file was deleted.

6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,11 @@
},
"devDependencies": {
"ava": "0.14.0",
"benchmark": "2.1.0",
"coveralls": "2.11.9",
"eslint": "2.7.0",
"eslint-config-pedant": "0.2.0",
"jscs": "2.11.0",
"matcha": "0.7.0",
"mock-fs": "3.8.0",
"nyc": "6.2.1",
"promise.prototype.finally": "1.0.1",
Expand All @@ -39,8 +39,8 @@
"pretest": "eslint . && jscs . -c .jscs.js",
"test": "nyc ava",
"unit-test": "ava",
"bench": "npm run bench-deps && matcha benchmark/*.js",
"bench-deps": "cd benchmark && npm i && cd fixtures && bower i",
"bench": "npm run bench-deps && node ./bench/run.js",
"bench-deps": "cd bench && npm i && cd fixtures && bower i",
"coveralls": "nyc report --reporter=text-lcov | coveralls"
},
"ava": {
Expand Down

0 comments on commit 760e094

Please sign in to comment.