我把这个接口的同步写改成了异步,用户不等了。我拉了个小群,把相关同学都叫了进来。我发现这个查询的返回结果集比实际用到的大得多

我把这个请求拆成了并行的,总耗时降了一半。我把相关的记录都翻了出来做对照。我发现这个服务的 CPU 大部分花在序列化上。我把它写进了组内的避坑文档第一章

这个服务的响应时间随并发上升得很快。我忽然觉得,这可能就是这一行的常态。我把这个服务的线程池参数调了调,吞吐稳定了。我沉默了,但心里是服的

面试时聊得最多的就是性能优化,入职后优化的最多的就是自己的简历。这套流程走下来,我从头到尾又确认了一遍。我把这个接口的依赖调用改成了并行的,耗时砍半。办公室安静得能听见键盘声

这个服务的响应时间随并发上升得很快。我把这个接口的返回结构瘦身了,前端渲染也快了。我把它写进了组内的避坑文档第一章

我把这个对象的创建挪到了循环外,GC 压力小了。我把相关的记录都翻了出来做对照。我把这个索引重建了一遍,查询终于回到毫秒级。同事说这波操作可以写进新人培训教材

性能优化的第一步是测量,第二步是承认是自己写慢的。我忽然觉得,这可能就是这一行的常态。我把这个对象的复用池加上了,创建开销降了很多。从此我多了一条团队规约

懒加载加了、分包做了、CDN 上了,最后发现慢的是用户那个 2G 信号。我想了想自己这些年,好像确实如此。我确认了瓶颈在数据库,而不是我以为的应用层。真香定律准时生效

这个服务的响应时间随并发上升得很快。我发现自己居然没法反驳。我把这个序列化的方式换成了更快的,耗时降了一半。这大概就是程序员的人生吧

我把这个对象的创建挪到了循环外,GC 压力小了。我默默打开了编辑器,准备一步步验证。我在心里给这次的优化算了笔账,收益大于成本。幸好之前留了备份