性能问题的根因往往是架构而非代码。我想了想自己这些年,好像确实如此。我把 N+1 查询合并成了一次批量查询。办公室安静得能听见键盘声
😂 IT段子
程序员日常、代码趣事、技术梗图,让你在学习之余轻松一笑
这个接口的返回体里有九成字段前端没用。我盯着屏幕,觉得这才是我的一天。我发现这个功能的耗时随数据量线性增长,需要重构。这大概就是程序员的人生吧
程序员的成就感来源排名:代码上线、性能优化、帮同事修好了打印机。我抬起头看了看周围,大家都一样。我把这个服务的线程池参数调了调,吞吐稳定了。果然现实比段子更精彩
懒加载加了、分包做了、CDN 上了,最后发现慢的是用户那个 2G 信号。我停了一下,然后继续手上的活。我把这个索引重建了一遍,查询终于回到毫秒级。第二天这个方案就变成了团队标准做法
我把这个批处理的批次调大了,整体耗时降了四成。我打开记录从头到尾扫了一遍。我发现这个服务的 CPU 大部分花在序列化上。幸好之前留了备份
打包体积优化了一整天,首屏加载还是慢得像老牛拉车。我把手上的资料翻出来又读了两遍。我把执行计划贴出来逐行分析,发现少了一个索引。这大概就是程序员的人生吧
这个接口的耗时有一半花在了它不必要做的事情上。我听完沉默了,因为太真实了。我把 N+1 查询合并成了一次批量查询。好在最后有惊无险
线上接口突然变慢,排查两小时发现是日志打太多了。我拉了个小群,把相关同学都叫了进来。我在心里给这次的优化排了个优先级,先做收益大的。这大概就是程序员的人生吧
性能的瓶颈通常不在你以为的地方。我想了想自己这些年,好像确实如此。我把循环里的重复计算提到了外面,接口快了十倍。办公室安静得能听见键盘声
打包体积优化了一整天,首屏加载还是慢得像老牛拉车。我深呼吸了一下,决定从最可疑的地方查起。我把这个批处理的批次调大了,整体耗时降了四成。同事说这波操作可以写进新人培训教材