迭代 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() - 简化计算逻辑

实施记录

| 日期 | 优化项 | 状态 | 效果 |

|——|——–|——|——|

| | | | |