data-structure-typed
Version:
Standard data structure
59 lines (53 loc) • 2.41 kB
text/typescript
import { RedBlackTree } from '../../../../src';
import * as Benchmark from 'benchmark';
import { getRandomIntArray, magnitude } from '../../../utils';
import { OrderedMap } from 'js-sdsl';
import { isCompetitor } from '../../../config';
const suite = new Benchmark.Suite();
const rbTree = new RedBlackTree<number>();
const rbTreeNodeMode = new RedBlackTree<number>([], { isMapMode: false });
const { HUNDRED_THOUSAND } = magnitude;
const randomArray = getRandomIntArray(HUNDRED_THOUSAND, 0, HUNDRED_THOUSAND - 1, true);
const cOrderedMap = new OrderedMap<number, number>();
suite
.add(`${HUNDRED_THOUSAND.toLocaleString()} add randomly`, () => {
rbTree.clear();
for (let i = 0; i < randomArray.length; i++) rbTree.add(randomArray[i]);
})
.add(`${HUNDRED_THOUSAND.toLocaleString()} add`, () => {
rbTree.clear();
for (let i = 0; i < randomArray.length; i++) rbTree.add(i);
})
.add(`${HUNDRED_THOUSAND.toLocaleString()} get`, () => {
for (let i = 0; i < randomArray.length; i++) rbTree.get(randomArray[i]);
})
.add(`${HUNDRED_THOUSAND.toLocaleString()} getNode`, () => {
for (let i = 0; i < randomArray.length; i++) rbTree.getNode(randomArray[i]);
})
.add(`${HUNDRED_THOUSAND.toLocaleString()} node mode add randomly`, () => {
rbTreeNodeMode.clear();
for (let i = 0; i < randomArray.length; i++) rbTreeNodeMode.add(randomArray[i]);
})
.add(`${HUNDRED_THOUSAND.toLocaleString()} node mode get`, () => {
for (let i = 0; i < randomArray.length; i++) rbTreeNodeMode.get(randomArray[i]);
})
.add(`${HUNDRED_THOUSAND.toLocaleString()} iterator`, () => {
const entries = [...rbTree];
return entries.length === HUNDRED_THOUSAND;
})
.add(`${HUNDRED_THOUSAND.toLocaleString()} add & delete orderly`, () => {
rbTree.clear();
for (let i = 0; i < randomArray.length; i++) rbTree.add(i);
for (let i = 0; i < randomArray.length; i++) rbTree.delete(i);
})
.add(`${HUNDRED_THOUSAND.toLocaleString()} add & delete randomly`, () => {
rbTree.clear();
for (let i = 0; i < randomArray.length; i++) rbTree.add(randomArray[i]);
for (let i = 0; i < randomArray.length; i++) rbTree.delete(randomArray[i]);
});
if (isCompetitor) {
suite.add(`CPT ${HUNDRED_THOUSAND.toLocaleString()} add`, () => {
for (let i = 0; i < randomArray.length; i++) cOrderedMap.setElement(randomArray[i], randomArray[i]);
});
}
export { suite };