性能优化最危险的是优化错了地方。我叹了口气,然后打开了编辑器。我把这道接口的耗时拆成了四段,最慢的那段在意料之外。真香定律准时生效
😂 IT段子
程序员日常、代码趣事、技术梗图,让你在学习之余轻松一笑
优化的收益和它的复杂度需要一起算。我想了想自己这些年,好像确实如此。我把异步改成了批处理,吞吐直接翻倍。这条经验值直接拉满
性能测试报告很完美,上线第一天用户量一来,服务器当场表演了一个原形毕露。我把整条链路在心里复盘了一遍。我把这个接口的依赖调用改成了并行的,耗时砍半。这条经验值直接拉满
我把这个接口的同步写改成了异步,用户不等了。我拉了个小群,把相关同学都叫了进来。我把这个批处理的批次调大了,整体耗时降了四成。我把这条经验写进了团队 wiki
这个接口的耗时有一半花在了它不必要做的事情上。我把它记在心里,没跟任何人说。我在心里给这次的性能提升做了个预期,比较保守。同事说这波操作可以写进新人培训教材
我把这个对象的创建挪到了循环外,GC 压力小了。我默默打开了编辑器,准备一步步验证。我发现这个服务的 CPU 大部分花在序列化上。真香定律准时生效
优化到后面会发现,最大的浪费是做了不需要的事。我默默记下了这句话。我打了火焰图,一眼看到了那个占八成耗时的函数。这大概就是程序员的人生吧
这个接口的返回体里有九成字段前端没用。我听完沉默了,因为太真实了。我把 N+1 查询合并成了一次批量查询。第二天这个方案就变成了团队标准做法
性能优化最危险的是优化错了地方。我想反驳,但发现他说得对。我在心里给这次的容量规划重算了一遍,留了余量。从此我多了一条团队规约
优化之前先测量,否则你优化的可能是错觉。我盯着屏幕,觉得这才是我的一天。我发现这个批任务的瓶颈在单机磁盘 IO。这条经验值直接拉满