迭代 130 - 性能优化 11¶
已优化函数(排除)¶
| 函数 | 迭代 | 优化内容 |
|——|——|———-|
| linebuffer.datetime() | 128 | 模块级常量,简化逻辑 |
| csvgeneric._loadline() | 128 | 缓存字段映射 |
| drawdown.next() | 127 | 缓存属性访问 |
| dateintern.num2date() | 127 | lru_cache |
| linebuffer.backwards() | 129 | 切片删除替代循环 |
| analyzer._notify_fund/cashvalue | 129 | 空 children 快速路径 |
| bollinger.once() | 尝试失败 | 浮点精度问题 |
剩余可优化函数(按 tottime 排序)¶
| 排名 | 函数 | tottime | 调用次数 | 优化可行性 |
|——|——|———|———-|————|
| 1 | parameters.get() | 4.81s | 9.6M | ⭐ 高 |
| 2 | bbroker._get_value() | 4.39s | 711K | ⭐ 中 |
| 3 | parameters.get_param() | 3.85s | 7.4M | ⭐ 高 |
| 4 | autodict.__getattr__() | 2.08s | 5.7M | ⭐ 中 |
| 5 | analyzer._dt_over() | 1.93s | 1.4M | ⭐ 中 |
| 6 | analyzer._get_dt_cmpkey() | 1.77s | 1.4M | ⭐ 中 |
| 7 | total_value.next() | 1.26s | 522K | ⭐ 中 |
| 8 | timereturn.next() | 0.90s | 691K | ⭐ 低 |
不可优化函数(核心/内置)¶
lineseries.__setattr__()- 核心属性设置,高风险linebuffer.forward/advance/__setitem__/__getitem__- 核心操作builtins.len/setattr/getattr/hasattr- 内置函数strategy._oncepost/_notify- 策略核心逻辑_strptime._strptime- 标准库
优化计划¶
Phase 1: parameters 模块优化¶
1.1 parameters.get() - 减少字典查找开销
1.2 parameters.get_param() - 缓存参数访问
Phase 2: analyzer 模块优化¶
2.1 analyzer._dt_over() - 简化日期比较逻辑
2.2 analyzer._get_dt_cmpkey() - 缓存比较键
Phase 3: 其他优化¶
3.1 autodict.__getattr__() - 简化属性访问
3.2 total_value.next() - 简化计算逻辑
实施记录¶
| 日期 | 优化项 | 状态 | 效果 |
|——|——–|——|——|
| | | | |