Files
labelimage/components/label/config/performance.ts
2026-04-08 15:14:17 +08:00

57 lines
1.7 KiB
TypeScript

const parseEnvInt = (
value: string | undefined,
fallback: number,
min: number,
max: number
) => {
if (!value) return fallback
const parsed = Number.parseInt(value, 10)
if (!Number.isFinite(parsed)) return fallback
return Math.min(max, Math.max(min, parsed))
}
export const labelimagePerformanceConfig = {
// 单次渲染的路径切片大小。越小越丝滑,越大越快完成。
polygonRenderBatchSize: parseEnvInt(
process.env.NEXT_PUBLIC_LABELIMAGE_POLYGON_BATCH_SIZE,
12,
1,
200
),
// 每帧渲染预算(毫秒)。越小越不卡操作,越大越快完成绘制。
polygonRenderBatchBudgetMs: parseEnvInt(
process.env.NEXT_PUBLIC_LABELIMAGE_POLYGON_BATCH_BUDGET_MS,
6,
1,
33
),
// 切帧准备超过该阈值后才显示轻量提示,避免短切换频繁闪动提示。
frameSwitchLoadingDelayMs: parseEnvInt(
process.env.NEXT_PUBLIC_LABELIMAGE_FRAME_SWITCH_LOADING_DELAY_MS,
120,
0,
1000
),
// 切帧时新旧图层的交叉淡入时长(毫秒)。设为 0 可关闭淡入。
rasterCrossfadeDurationMs: parseEnvInt(
process.env.NEXT_PUBLIC_LABELIMAGE_RASTER_CROSSFADE_MS,
90,
0,
400
),
// 容器尺寸连续变化时,延迟提交 canvas 实际宽高,减少频繁重置导致的白闪。
resizeCommitDebounceMs: parseEnvInt(
process.env.NEXT_PUBLIC_LABELIMAGE_RESIZE_COMMIT_DEBOUNCE_MS,
90,
0,
500
),
// 容器尺寸变更后的视觉缓动时长(毫秒),用于降低“跳变感”。
resizeInterpolationDurationMs: parseEnvInt(
process.env.NEXT_PUBLIC_LABELIMAGE_RESIZE_INTERPOLATION_MS,
100,
0,
400
),
} as const