| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- import { bench, describe } from 'vitest'
- import { type SSRBuffer, createBuffer } from '../src/render'
- import { unrollBuffer } from '../src/renderToString'
- function createSyncBuffer(levels: number, itemsPerLevel: number): SSRBuffer {
- const buffer = createBuffer()
- function addItems(buf: ReturnType<typeof createBuffer>, level: number) {
- for (let i = 1; i <= levels * itemsPerLevel; i++) {
- buf.push(`sync${level}.${i}`)
- }
- if (level < levels) {
- const subBuffer = createBuffer()
- addItems(subBuffer, level + 1)
- buf.push(subBuffer.getBuffer())
- }
- }
- addItems(buffer, 1)
- return buffer.getBuffer()
- }
- function createMixedBuffer(levels: number, itemsPerLevel: number): SSRBuffer {
- const buffer = createBuffer()
- function addItems(buf: ReturnType<typeof createBuffer>, level: number) {
- for (let i = 1; i <= levels * itemsPerLevel; i++) {
- if (i % 3 === 0) {
- // @ts-expect-error testing...
- buf.push(Promise.resolve(`async${level}.${i}`))
- } else {
- buf.push(`sync${level}.${i}`)
- }
- }
- if (level < levels) {
- const subBuffer = createBuffer()
- addItems(subBuffer, level + 1)
- buf.push(subBuffer.getBuffer())
- }
- }
- addItems(buffer, 1)
- return buffer.getBuffer()
- }
- describe('unrollBuffer', () => {
- let syncBuffer = createBuffer().getBuffer()
- let mixedBuffer = createBuffer().getBuffer()
- bench(
- 'sync',
- () => {
- return unrollBuffer(syncBuffer) as any
- },
- {
- setup() {
- syncBuffer = createSyncBuffer(5, 3)
- },
- },
- )
- bench(
- 'mixed',
- () => {
- return unrollBuffer(mixedBuffer) as any
- },
- {
- setup() {
- mixedBuffer = createMixedBuffer(5, 3)
- },
- },
- )
- })
|