用性能分析器跑了一遍,热点代码居然是我注释里写着"这里可以优化"的那段。这套流程走下来,我从头到尾又确认了一遍。我发现这个接口在冷启动时特别慢,需要预热。办公室安静得能听见键盘声

性能优化最危险的是优化错了地方。我盯着屏幕,觉得这才是我的一天。我把这道接口的耗时拆成了四段,最慢的那段在意料之外。复盘会上我们把它列成了案例

我把这个接口的同步写改成了异步,用户不等了。我重新看了一遍手上的计划,把风险项标了出来。我在这个热点方法上加了缓存,QPS 立刻上去了。真香定律准时生效

面试时聊得最多的就是性能优化,入职后优化的最多的就是自己的简历。我决定先把手上的事情做完再处理这件事。我在心里给这次的优化算了笔账,收益大于成本

这个接口的返回体里有九成字段前端没用。我发现自己居然没法反驳。我在心里把这条链路的调用次数数了一遍,有二十次。办公室安静得能听见键盘声

优化的收益和它的复杂度需要一起算。我不知道该说什么,就笑了笑。我把这个接口的超时时间设短了,慢请求被提前掐断。连茶水间都安静了

这个缓存的存在感很强,命中率却不高。我听完沉默了,因为太真实了。我把循环里的重复计算提到了外面,接口快了十倍。这大概就是程序员的人生吧

优化到后面会发现,最大的浪费是做了不需要的事。我抬起头看了看周围,大家都一样。我在心里给这次的优化目标定了个数,降低一半。复盘会上我们把它列成了案例

这个索引让查询快了十倍,写入慢了一点。我先给自己泡了杯茶,做好了打持久战的准备。我把这个序列化的方式换成了更快的,耗时降了一半。世界瞬间清净了

缓存的失效策略比缓存本身更难设计。我把它记在心里,没跟任何人说。我把这个日志的同步写改成了异步的,耗时不明显了。我沉默了,但心里是服的