-
Alexander Rose authoredAlexander Rose authored
string-builder.ts 1.68 KiB
import * as B from 'benchmark'
import SB from 'mol-util/string-builder'
export namespace Test {
function createData(n: number) {
const ret: string[] = [];
for (let i = 0; i < n; i++) {
ret[i] = '' + ((100000000 * Math.random() + 1) | 0);
}
return ret;
}
function build(data: string[], chunkSize: number): SB {
const sb = SB.create(chunkSize);
for (let i = 0, _i = data.length; i < _i; i++) {
SB.writeSafe(sb, data[i]);
SB.whitespace1(sb);
}
return sb;
}
function buildWS(data: string[], chunkSize: number): SB {
const sb = SB.create(chunkSize);
for (let i = 0, _i = data.length; i < _i; i++) {
SB.writeSafe(sb, data[i] + ' ');
}
return sb;
}
// function naive(data: string[]) {
// let ret = '';
// for (let i = 0, _i = data.length; i < _i; i++) ret += data[i];
// return ret;
// }
// function join(data: string[]) {
// let ret = [];
// for (let i = 0, _i = data.length; i < _i; i++) ret[i] = data[i];
// return ret.join('');
// }
export function run() {
const data = createData(26 * 100000);
const N = 512;
const suite = new B.Suite();
suite
// .add(`naive`, () => naive(data))
// .add(`join`, () => join(data))
// .add(`${N} chunks`, () => SB.getChunks(build(data, N)))
.add(`${N} str`, () => SB.getString(build(data, N)))
.add(`${N} str ws`, () => SB.getString(buildWS(data, N)))
.on('cycle', (e: any) => console.log(String(e.target)))
.run();
}
}
Test.run();