UNPKG

data-structure-typed

Version:
59 lines (53 loc) 2.41 kB
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 };