3.0 KiB
3.0 KiB
Node 节点优化计划
阶段一:内存布局与数据结构优化
1.1 成员变量重排(减少内存占用)
1.2 子节点查找优化(哈希索引)
- 目标: node.h 和 node.cpp
- 内容:
- 添加
std::unordered_map<std::string, WeakPtr<Node>> nameIndex_ - 添加
std::unordered_map<int, WeakPtr<Node>> tagIndex_ - 修改
addChild/removeChild维护索引
- 添加
- 预期收益:
getChildByName/getChildByTag从 O(n) 优化到 O(1)
阶段二:Action 系统优化
2.1 Action 存储优化
- 目标: node.h 和 node.cpp
- 内容:
- 使用
std::unordered_map<int, Ptr<Action>>替代std::vector存储带 tag 的 Action - 使用侵入式链表管理 Action 更新顺序
- 使用
- 预期收益: Action 查找和删除从 O(n) 优化到 O(1)
阶段三:变换计算优化
3.1 世界变换迭代计算
- 目标: node.cpp
- 内容:
- 将
getWorldTransform()的递归改为迭代实现 - 使用栈结构收集父节点链
- 将
- 预期收益: 避免深层级节点的栈溢出风险,减少函数调用开销
3.2 矩阵计算优化
- 目标: node.cpp
- 内容:
- 优化
getLocalTransform()中的矩阵构造顺序 - 延迟计算 skew 矩阵(仅在需要时)
- 优化
- 预期收益: 减少不必要的矩阵乘法
阶段四:渲染与批量操作优化
4.1 渲染命令收集完善
- 目标: node.cpp
- 内容:
- 完善
collectRenderCommands实现 - 添加 Z 序累积和递归收集
- 完善
- 预期收益: 支持多线程渲染命令收集
4.2 批量操作接口
- 目标: node.h 和 node.cpp
- 内容:
- 添加
addChildren(std::vector<Ptr<Node>>&& children)批量添加 - 优化
removeAllChildren使用批量处理
- 添加
- 预期收益: 减少多次操作的开销
预计总工作量: 4-6 小时 优先级: 高(1.1, 1.2)> 中(2.1, 3.1)> 低(3.2, 4.1, 4.2)