iris-messenger/tests/SortedMap.bench.ts

58 lines
1.4 KiB
TypeScript
Raw Permalink Normal View History

2023-08-18 07:20:04 +00:00
import { Event } from 'nostr-tools';
import { bench, describe } from 'vitest';
2023-08-21 19:53:08 +00:00
import SortedMap from '@/utils/SortedMap/SortedMap.tsx';
2023-08-18 07:20:04 +00:00
import events from './events.json';
import RBSortedMap from './RBSortedMap.ts';
2023-08-18 07:20:04 +00:00
describe('SortedMap Write Benchmark', () => {
bench(
'Array-based SortedMap',
() => {
const sortedEvents = new SortedMap<string, Event>();
events.forEach((event) => {
sortedEvents.set(event.created_at + event.id, event);
});
},
{ iterations: 1000 },
);
bench(
'Red-Black Tree SortedMap',
() => {
const sortedEvents = new RBSortedMap<string, Event>();
events.forEach((event) => {
sortedEvents.set(event.created_at + event.id, event);
});
},
{ iterations: 1000 },
);
});
describe('SortedMap Write & Read Benchmark', () => {
bench(
'Array-based SortedMap',
() => {
const sortedEvents = new SortedMap<string, Event>();
events.forEach((event) => {
sortedEvents.set(event.created_at + event.id, event);
});
[...sortedEvents.values()].reverse();
},
{ iterations: 1000 },
);
bench(
'Red-Black Tree SortedMap',
() => {
const sortedEvents = new RBSortedMap<string, Event>();
events.forEach((event) => {
sortedEvents.set(event.created_at + event.id, event);
});
[...sortedEvents.values()].reverse();
},
{ iterations: 1000 },
);
});