--- name: performance-optimization description: "性能优化工作流(TSL/Python/C++):度量→定位→优化→验证。Triggers: 性能优化, 优化性能, 代码慢, 提升速度, performance optimization, slow code, profiling" --- # 性能优化工作流 > 适用语言:TSL / Python / C++ > 核心原则:没有度量就没有优化。 ## 使用时机 - 功能正确,但响应慢或资源消耗过高 - 热路径明显(循环/批处理/大规模数据) - 需要在不改变行为的前提下提升性能 ## 必备输入 - 目标场景与数据规模(输入大小、并发量) - 基线指标(耗时、吞吐、内存、CPU) - 约束条件(允许的改动范围、兼容性要求) ## 工作流程(按顺序) ### 1. 度量基线(Baseline) 先拿到“优化前”的数据作为对照。 - TSL(计时示例,使用 MTIC/MTOC): ```tsl T1 := MTIC; // ... 逻辑 ... Elapsed := MTOC(T1); Echo "Elapsed:", Elapsed; ``` - Python: ```python import time start = time.time() # ... code ... print(f"Elapsed: {time.time() - start:.3f}s") ``` - C++: ```cpp auto start = std::chrono::high_resolution_clock::now(); // ... code ... auto elapsed = std::chrono::duration_cast( std::chrono::high_resolution_clock::now() - start); std::cout << "Elapsed: " << elapsed.count() << "ms\n"; ``` ### 2. 定位瓶颈(Profiling) 只优化热点,不动冷路径。 - TSL:插入关键路径计时,或使用 `docs/tsl/syntax_book/07_debug_and_profiler.md` 中的工具 - Python:`cProfile` / `line_profiler` - C++:`perf` / `gprof` / `valgrind --tool=callgrind` ### 3. 优化策略(从高收益到低收益) **3.1 算法级(优先级最高)** - 降低复杂度:`O(n^2)` → `O(n log n)` → `O(n)` - 避免重复计算:缓存、记忆化 **3.2 数据结构级** - 选择合适容器:数组 vs 哈希表 vs 树 - 预分配容量,减少扩容 **3.3 循环级** - 循环内不做 I/O - 循环内避免重复解析/格式化 - 提前计算循环不变量 **3.4 I/O 级** - 批量读写(减少系统调用) - 缓存(明确 TTL 与容量上限) ### 4. 验证效果(Verify) - 对比优化前后指标 - 运行回归测试,保证行为一致 - 在真实数据量下复测 ## 反模式(不要做) - 没有度量就“感觉”优化 - 牺牲可读性换取微小收益 - 为冷路径引入复杂缓存 - 未验证就宣称提升 ## 输出清单(交付要求) - 基线指标(优化前) - 瓶颈定位结果(热点函数/路径) - 优化方案与改动点 - 优化后指标(对比数据) - 风险说明与回滚策略 ## 权威参考 - TSL:`docs/tsl/syntax_book/07_debug_and_profiler.md` - Python:`docs/python/tooling.md` - C++:`docs/cpp/toolchain.md`