记录线上一次慢接口的优化过程
优化前 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循环拷贝
