Skip to content

Commit 54c94bc

Browse files
committed
test(layout-bridge): migrate perf benchmark to ResolvedLayout (SD-2836)
The layout-bridge incremental-pipeline performance benchmark called painter.paint(layout, mount) and painter.setData(...). Both are removed by the API collapse. Migrate to resolveLayout() + DomPainterInput so the benchmark continues to exercise the painter under the new contract.
1 parent 3e7b9e2 commit 54c94bc

1 file changed

Lines changed: 17 additions & 7 deletions

File tree

  • packages/layout-engine/layout-bridge/test/benchmarks

packages/layout-engine/layout-bridge/test/benchmarks/index.ts

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import type { FlowBlock, Layout, ParagraphBlock, ParagraphMeasure, Run } from '@
33
import type { LayoutOptions } from '@superdoc/layout-engine';
44
import { measureBlock } from '@superdoc/measuring-dom';
55
import { createDomPainter } from '@superdoc/painter-dom';
6+
import { resolveLayout } from '@superdoc/layout-resolved';
67
import { layoutDocument } from '@superdoc/layout-engine';
78
import { incrementalLayout, measureCache, resolveMeasurementConstraints } from '../../src/incrementalLayout';
89

@@ -88,11 +89,19 @@ export async function runBenchmarkScenario(config: BenchmarkConfig): Promise<Ben
8889
const initialDuration = performance.now() - startFull;
8990

9091
const mount = ensureBenchmarkMount();
91-
const painter = createDomPainter({
92-
blocks: doc.blocks,
93-
measures: initial.measures,
94-
});
95-
painter.paint(initial.layout, mount);
92+
const painter = createDomPainter({});
93+
let painterBlocks = doc.blocks;
94+
let painterMeasures = initial.measures;
95+
const paintLayout = (layout: Layout) => {
96+
const resolvedLayout = resolveLayout({
97+
layout,
98+
flowMode: 'paginated',
99+
blocks: painterBlocks,
100+
measures: painterMeasures,
101+
});
102+
painter.paint({ resolvedLayout }, mount);
103+
};
104+
paintLayout(initial.layout);
96105

97106
previousBlocks = doc.blocks;
98107
previousLayout = initial.layout;
@@ -111,8 +120,9 @@ export async function runBenchmarkScenario(config: BenchmarkConfig): Promise<Ben
111120
const start = performance.now();
112121

113122
const result = await incrementalLayout(previousBlocks, previousLayout, nextBlocks, layoutOptions, measure);
114-
painter.setData?.(nextBlocks, result.measures);
115-
painter.paint(result.layout, mount);
123+
painterBlocks = nextBlocks;
124+
painterMeasures = result.measures;
125+
paintLayout(result.layout);
116126
const duration = performance.now() - start;
117127
durations.push(duration);
118128

0 commit comments

Comments
 (0)