摘要
状态估计(SE)保存的一份单英雄剖析显示:274 次公开属性投影中,施法配置构造函数被调用 241,120 次,累计 3.437764 秒(剖析器开销下的诊断值,不是正常延迟)。SE 请 Simulator 一方评估能否复用。本评估结论:在一次属性查询内部、每次访问都先跑完现有校验之后,按校验后的资源组合复用不可变配置是兼容的;不需要新接口、新字段、新规则版本或缓存服务。评估本身不改任何可执行行为,实现见实验 0329。
要回答的问题
缓存的键应是什么?生命周期多长?会不会让无效输入“蹭”到有效记录?会不会改变输出或错误顺序?
分析
- 当前路径:一次公开查询创建一个所有者上下文,先准备一次法术书和装备,再对每个成长结果和候选计算前后潜力;每次潜力计算都重新构造施法配置。
- 可共享性:导出的配置是冻结的,只含不可变元组和整数开局回合;共享对象只改变 Python 对象身份,而现有合同从未承诺对象唯一。
- 键:校验后的槽位倍率元组。资源组合只有 8 种:一次普通
(1.0,)、两次普通(1.0, 1.0)、普通加一次超载(1.0, m)、两次普通加一次超载(1.0, 1.0, m),其中 m 取 1.5、1.75 或 2.0。在固定上下文中,学派绕过、开局回合和默认说明不变,所以最多 8 条记录。 - 顺序:每次访问依次跑英雄校验(类型、所有者、完整法术书、整数咒力)、资源校验,再查找;未命中时才调用原构造器。绝不在校验前用原始值查找,因为
True == 1会让无效值命中有效记录。 - 生命周期:缓存只属于这次查询,正常返回或失败都随上下文释放,不进入全局、引擎、SE 或工作进程状态。
交付前必须通过的兼容检查
| 方向 | 要求 |
|---|---|
| 8 种资源配置 | 与原构造完全类型化相等,并用不同的有效咒力/法力/施法计数重复 |
| 缓存已热时的无效英雄/资源 | 仍按原优先级拒绝 |
| 上下文与构造器隔离 | 不同学派/开局门禁不共享;畸形输入仍被拒 |
| 整份公开投影 | 每个候选、结果、分数、属性、法力、法术、费用、说明都相等 |
| 现有消费者 | SE 响应整体不变,旧的空配置默认不被替换 |
局限
- 操作计数能证明“校验后构造更少”,但不能证明稳定提速;任何延迟比较须另立资源与时钟协议。
- 本评估不授权“整份潜力值记忆化”:那需要覆盖全部六个英雄属性(含幸运/士气)以及所有上下文相关输出的完整类型化键,而剖析没有保存参数值,命中率未知。
- 只读审计与独立审阅都不运行任何产品导入、查询、模型或原生操作。
结论与下一步
复用在上述边界内兼容。实现及完整等价证据见实验 0329;本评估没有声称任何提速或整帧 p95 改善。
Comments