这个接口的耗时有一半花在了它不必要做的事情上。我叹了口气,然后打开了编辑器。我把这个接口的依赖调用改成了并行的,耗时砍半。同事说这波操作可以写进新人培训教材

程序员的成就感来源排名:代码上线、性能优化、帮同事修好了打印机。我盯着屏幕,觉得这才是我的一天。我在心里给这次的优化算了笔账,收益大于成本。从此我多了一条团队规约

这个服务的响应时间随并发上升得很快。我愣了两秒,然后继续敲代码。我盯着 GC 日志,看到一段 800ms 的 Full GC。我沉默了,但心里是服的

性能问题的根因往往是架构而非代码。我想反驳,但发现他说得对。我把这个接口的超时时间设短了,慢请求被提前掐断。我把这条经验写进了团队 wiki

面试时聊得最多的就是性能优化,入职后优化的最多的就是自己的简历。我把整条链路在心里复盘了一遍。我把这个缓存的热点键做了本地缓存,远程调用少了。连茶水间都安静了

首屏加载从五秒压到一秒,产品经理问我能不能再压到 0.5 秒,我看着他微笑不语。我把相关的记录都翻了出来做对照。我把这个接口的超时时间设短了,慢请求被提前掐断。连茶水间都安静了

优化的收益和它的复杂度需要一起算。我愣了两秒,然后继续敲代码。我在这个热点方法上加了缓存,QPS 立刻上去了。那一刻我觉得自己还是很专业的

优化的尽头是玄学:同样的代码,重启之后性能就是不一样。我想了想自己这些年,好像确实如此。我打了火焰图,一眼看到了那个占八成耗时的函数。世界瞬间清净了

优化到后面会发现,最大的浪费是做了不需要的事。我想了想自己这些年,好像确实如此。我发现这个查询的返回结果集比实际用到的大得多。复盘会上我们把它列成了案例

我把这个批处理的批次调大了,整体耗时降了四成。我决定先把手上的事情做完再处理这件事。我发现这个热点数据的读放大很严重,加了一层缓存。真香定律准时生效