Files
fluxer/fluxer_app/src/features/channel/components/ChannelMessageStreamUtils.bench.ts
T

43 lines
1.2 KiB
TypeScript

// SPDX-License-Identifier: AGPL-3.0-or-later
import type {Message} from '@app/features/messaging/models/MessagingMessage';
import type {ChannelStreamItem} from '@app/features/messaging/utils/MessageGroupingUtils';
import {bench, describe} from 'vitest';
import {getUnreadDividerBeforeMessageId} from './ChannelMessageStreamUtils';
const GROUP_ITEMS = Array.from(
{length: 100},
(_value, index): ChannelStreamItem => ({
type: 'MESSAGE',
content: {
id: `message-${index}`,
} as Message,
groupId: 'group-1',
showUnreadDividerBefore: index === 74,
}),
);
const GROUPS = Array.from({length: 1_000}, (_value, groupIndex) =>
GROUP_ITEMS.map(
(item, itemIndex): ChannelStreamItem => ({
...item,
content: {
id: `message-${groupIndex}-${itemIndex}`,
} as Message,
showUnreadDividerBefore: itemIndex === groupIndex % GROUP_ITEMS.length,
}),
),
);
describe('ChannelMessageStreamUtils benchmarks', () => {
bench('find unread divider id across 1k pending render groups', () => {
let hits = 0;
for (const group of GROUPS) {
if (getUnreadDividerBeforeMessageId(group) !== null) {
hits += 1;
}
}
(globalThis as {__channelMessageStreamBenchSink?: number}).__channelMessageStreamBenchSink = hits;
});
});