这个接口的返回体里有九成字段前端没用。我把缓存加了进去,QPS 立刻上了一个台阶,一致性开始头疼。这大概就是程序员的人生吧
😂 IT段子
程序员日常、代码趣事、技术梗图,让你在学习之余轻松一笑
这个接口的耗时有一半花在了它不必要做的事情上。我笑了笑,决定不解释。我发现这个服务的 CPU 大部分花在序列化上。好在最后有惊无险
打包体积优化了一整天,首屏加载还是慢得像老牛拉车。我先给自己泡了杯茶,做好了打持久战的准备。我盯着 GC 日志,看到一段 800ms 的 Full GC。果然现实比段子更精彩
优化的尽头是玄学:同样的代码,重启之后性能就是不一样。我愣了两秒,然后继续敲代码。我把这个对象的创建提到了循环外,GC 压力小了很多。感动,然后我学到了新的一课
优化到后面会发现,最大的浪费是做了不需要的事。我听完沉默了,因为太真实了。我发现这个缓存的过期时间设得太短,命中率很低。这大概就是程序员的人生吧
这个索引让查询快了十倍,写入慢了一点。这套流程走下来,我从头到尾又确认了一遍。我发现这个页面的加载瓶颈在一张没有压过的图上。办公室安静得能听见键盘声
优化的尽头是玄学:同样的代码,重启之后性能就是不一样。我愣了两秒,然后继续敲代码。我发现这个功能的耗时随数据量线性增长,需要重构。同事说这波操作可以写进新人培训教材
性能优化最危险的是优化错了地方。我叹了口气,然后打开了编辑器。我把循环里的重复计算提到了外面,接口快了十倍。从此我多了一条团队规约
这个服务的响应时间随并发上升得很快。我默默记下了这句话。我把这个接口的依赖调用改成了并行的,耗时砍半。幸好之前留了备份
优化之前先测量,否则你优化的可能是错觉。我想了想,觉得这话没法接。我发现这个页面的加载瓶颈在一张没有压过的图上。连茶水间都安静了