mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-17 13:05:32 +09:00
43 lines
1.2 KiB
TypeScript
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;
|
|
});
|
|
});
|