记录线上一次慢接口的优化过程
优化前 Trace 情况:可以看到耗时部分是在 RPC 接口查询之后产生的
原代码:
怀疑 BeanCopy 工具有问题,调整代码,去除 BeanCopy:
优化后 Trace 情况:
优化分析
初步猜测
-
重载方法的推导 (对于proto的兼容,如enum和date,我们会新增额外的重载方法,简化代码)
-
入参不同类型的推导(此次结构定义,有一些对象Vo是long,proto是int)
-
缺少参数的查找(此次结构定义,存在参数不对应的情况)
验证
验证代码
运行结果
new time:3
old time:48701
主要时间在预热和旧代码
Hutool 循环 loadClass
问题代码:
新代码已经修复
https://github.com/dromara/hutool/commit/200c098b293d5af4a350d11d5f97b9d2c2bdabfc
升级 Hutool版本,调整后效果
new time:7
old time:373
最大时间为for循环拷贝