diff --git a/__tests__/demos/perf/index.ts b/__tests__/demos/perf/index.ts index 46fec865b..15475060b 100644 --- a/__tests__/demos/perf/index.ts +++ b/__tests__/demos/perf/index.ts @@ -1 +1,2 @@ export { circles } from './circles'; +export { rects } from './rect'; diff --git a/__tests__/demos/perf/rect.ts b/__tests__/demos/perf/rect.ts new file mode 100644 index 000000000..304843ff9 --- /dev/null +++ b/__tests__/demos/perf/rect.ts @@ -0,0 +1,47 @@ +import { Rect, Group, runtime } from '@antv/g'; +import type { Canvas } from '@antv/g'; + +runtime.enableCSSParsing = false; + +export async function rects(context: { canvas: Canvas }) { + const { canvas } = context; + + await canvas.ready; + + const group1 = new Group({}); + const group2 = group1.appendChild(new Group({})); + canvas.appendChild(group2); + + console.time('render'); + + for (let i = 0; i < 10_0000; i++) { + const group = new Group({ + style: { + // transform: [['translate', Math.random() * 640, Math.random() * 640]], + transform: `translate(${Math.random() * 640}, ${Math.random() * 640})`, + }, + }); + + group.appendChild( + new Rect({ + style: { + width: 10, + height: 10, + fill: '#1890FF', + stroke: '#F04864', + lineWidth: 4, + }, + }), + ); + + group2.appendChild(group); + } + + canvas.addEventListener( + 'rerender', + () => { + console.timeEnd('render'); + }, + { once: true }, + ); +}