技术指标
性能调优
大图首屏、交互、标签、状态与布局的优化建议和度量方法
G6Lite 的首屏耗时通常由数据准备和布局计算主导;渲染后的状态更新、视口交互和拾取则更依赖浏览器、GPU 与单屏元素数量。调优应先测量,再针对瓶颈调整。
首屏与布局
- 后端已有坐标时,直接提供
x/y并使用 preset 数据,避免重复布局。 - 大图优先评估
grid、circular等确定性布局;力导向布局需要控制迭代次数。 - force 系布局可开启
worker: true,降低主线程阻塞。 - 先渲染关键节点和边,再按业务优先级补充非关键元素。
layout: {
type: 'force',
worker: true,
maxIteration: 100,
}高频更新
高亮、选中、隐藏等交互优先使用状态 API,让调度器只刷新变化部分:
graph.batchSetState([
{ id: 'n2', state: 'inactive', value: true },
{ id: 'e1', state: 'inactive', value: true },
]);批量更新位置或业务数据时,优先使用对应批量 API,避免在同一帧内循环触发大量独立调度。
样式与标签
- 函数式样式中只读取已准备好的字段,不执行复杂聚合或网络查询。
- 标签由 Canvas 2D 绘制;大规模图只展示关键标签,并随缩放级别或选中状态逐步展开。
- 控制阴影、复杂描边、超长文本和全量边标签,避免把 CPU 绘制成本放在每次视口更新上。
使用统一 Benchmark
# 快速确认 Node 与浏览器链路
npm run benchmark -- --suite all --mode quick
# 使用真实基线前扩大工作负载与采样量
npm run benchmark -- --suite browser --mode full对比前确保版本、commit、CPU、浏览器、视口、DPR、数据规模和布局配置一致。完整口径见 Benchmark 与性能指标。
如果目标是极大规模或低端移动设备,请在真实设备上使用真实拓扑测试;桌面 Headless Chrome 的结果不能替代终端验收。