mirror of
https://github.com/tenrok/BBob.git
synced 2026-05-15 11:59:37 +03:00
8797f7f363
* feat: initial typescript support * feat: typescript support * feat(plugin-helper): move files to typescript * chore: update lock files * feat: preset types * fix: build * fix: benchmark * fix: remove pnpm cache * fix: bench action * fix: pnpm recursive install * fix: nx cache * fix: lock file * fix: workflows * fix: lerna support in pnpm * fix: pnpm workspace * fix: remove unused files * fix: pnpm lock file * fix: update lerna for support pnpm * fix: lerna bootstrap * fix: rollup build * fix: update nx * fix: build * fix: add nx dep target * fix: remove nx cache * fix: workflow run on push only for master * fix: test workflow run on push only for master * fix: remove parallel for gen types * fix: benchmark * fix: benchmark imports * fix: pnpm * fix: types errors and pnpm * fix: types * fix: types * refactor: parser * fix(parser): tests * fix: preset tests * fix: react types * fix: react type declarations * fix: pnpm lock file * fix: react preset types * fix: lock file * fix: vue2 types * feat: dev container support * fix: types * fix: types * refactor: rewrite pkg-task, add nx gen-types deps, fix react/render.ts * refactor: types * fix: types * fix: rename gen-types to types * fix: nx build order * fix: nx reset * fix: define nx deps explicit * fix: build * fix: nx * fix: nx order build * fix: nx deps * fix: bbob cli tests * fix: tests * fix: cli tests and import * fix: test cover * fix: cli cover
84 lines
2.0 KiB
JavaScript
Vendored
84 lines
2.0 KiB
JavaScript
Vendored
/* eslint-disable global-require */
|
|
const Benchmark = require('benchmark');
|
|
const pico = require('picocolors');
|
|
|
|
const stub = require('./test/stub');
|
|
|
|
function formatNumber(number) {
|
|
return String(number)
|
|
// .replace(/\d{3}$/, ',$&')
|
|
.replace(/^(\d|\d\d)(\d{3},)/, '$1,$2');
|
|
}
|
|
|
|
const suite = new Benchmark.Suite();
|
|
|
|
suite
|
|
.add('regex/parser', () => require('./test/RegexParser').parse(stub, {
|
|
ch: {
|
|
closable: true,
|
|
},
|
|
}))
|
|
.add('ya-bbcode', () => {
|
|
const Yabbcode = require('ya-bbcode');
|
|
const parser = new Yabbcode();
|
|
|
|
parser.clearTags();
|
|
parser.registerTag('ch', {
|
|
type: 'replace',
|
|
open: () => '<div>',
|
|
close: () => '</div>',
|
|
});
|
|
|
|
return parser.parse(stub);
|
|
})
|
|
.add('xbbcode/parser', () => {
|
|
const xbbcode = require('xbbcode-parser');
|
|
xbbcode.addTags({
|
|
ch: {
|
|
openTag: () => '<div>',
|
|
closeTag: () => '</div>',
|
|
restrictChildrenTo: [],
|
|
},
|
|
});
|
|
|
|
return xbbcode.process({
|
|
text: stub,
|
|
removeMisalignedTags: false,
|
|
addInLineBreaks: false,
|
|
});
|
|
})
|
|
.add('@bbob/parser lexer old', () => {
|
|
const lexer1 = require('./lexer_old');
|
|
|
|
return require('@bbob/parser').parse(stub, {
|
|
onlyAllowTags: ['ch'],
|
|
createTokenizer: lexer1.createLexer,
|
|
});
|
|
})
|
|
.add('@bbob/parser lexer', () => {
|
|
const lexer2 = require('@bbob/parser');
|
|
|
|
return require('@bbob/parser').parse(stub, {
|
|
onlyAllowTags: ['ch'],
|
|
createTokenizer: lexer2.createLexer,
|
|
});
|
|
})
|
|
// add listeners
|
|
.on('cycle', (event) => {
|
|
const name = event.target.name.padEnd('@bbob/parser lexer old'.length);
|
|
const hz = formatNumber(event.target.hz.toFixed(0)).padStart(10);
|
|
|
|
process.stdout.write(`${name}${pico.bold(hz)}${pico.dim(' ops/sec')}\n`);
|
|
})
|
|
.on('complete', function onComplete() {
|
|
const name = this.filter('fastest').map('name').toString();
|
|
|
|
process.stdout.write(`Fastest is ${pico.bold(name)}`);
|
|
|
|
if (name.indexOf('@bbob') === -1) {
|
|
process.exit(1);
|
|
}
|
|
})
|
|
// run async
|
|
.run();
|