性能优化小记

  在很多时候性能优化会表现为更符合当前情况的设计和改进时间规划。

  情形一,开发迭代更倾向于工作范围明确的短周期实施,在增量需求面前既有实现不合时宜是常见的,大多数时候都只能将这种改良算作计划外事务,那么它将被搁置,或在后续某个改进成本更高的时候实施。

  情形二,当没有明显不恰当设计时,调整具体步骤的前后顺序,执行时机是往往是个有效手段。基于当前情况更为全面的理解,更准确的抓住侧重点后,则可以把次重要的延后,将紧急重要的提前,延后很容易理解,而提前事务有个不容易理解的地方,因为事务的步骤往往有前后依赖关系,如何在维持依赖设定下提前,让我们看一个例子。

  用户操作界面=>渲染=>请求接口=>渲染请求结果

这种场景下有个需要注意的地方,我们通常认为渲染是同步的,请求接口是异步的。看起来可以将异步的接口请求提前,但是如果直接将请求接口放到渲染之前,两个渲染可能因为重叠产生非预期结果,这么看来这个办法行不通。其实,我们想要的是提早请求,首个渲染的同时等待结果,在首个渲染结束后再处理请求结果的渲染,所以这次我们保持整个流程不变,但在首次渲染之前加一个请求接口的步骤,让请求提前发生,然后利用缓存机制将结果保存下来,接下来再次请求接口将直接使用到我们前置请求的结果,再配合设置缓存的生命周期,让下一次操作能拿到新结果,于是流程变为。

  用户操作界面=>请求接口(缓存)=>渲染=>请求接口(利用缓存)=>渲染请求结果

最终方案是,请求接口被提前的同时保持它在原流程中的位置,没有改变之前的流程安排,因此优化引入的险低。另外,异步缓存有个需要注意的地方,首个结果没获得时,可能存在其他访问,这就必须设计类似singleflight的操作合并,让相同操作一起等待等待首个结果。

  这就是最近优化的一点心得,下次再见。

posted @ 2025-06-12 21:35  络终  阅读(7)  评论(0)    收藏  举报