Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

大幅重构优化部分代码(不改动现有业务逻辑),提高运行性能 #3569

Open
wants to merge 43 commits into
base: master
Choose a base branch
from

Conversation

CodePlayer
Copy link

What kind of change does this PR introduce? (check at least one)

  • Bugfix
  • Feature
  • [√] Code style update
  • [√] Refactor
  • Build-related changes
  • [√] Other, please describe:

The description of the PR:

  1. 抽取部分重复代码封装为方法,减少重复代码
  2. 基于 JDK 8、Spring 特性以及现有工具类 StringUtils 精简部分代码
  3. 自定义 XxlJobToolModelUtil 精简重复代码,并提高运行性能
  4. 精简部分冗余的注释,例如 getUser() 方法上的注释 /* get user */ 并没有意义。
  5. 规范部分代码格式(为了减少代码审查工作,也没有全面统一格式化,仅限改动到的部分文件)
  6. 尽量避免使用正则表达式替换方法 replaceAll( ),改为 replace( )
  7. 提升 Cron 表达式的解析处理性能
  8. 避免一些反复的拆箱装箱开销
  9. 移除 日志埋点中冗余的占位符 {}
  10. 改进部分字符串的拼接处理性能
  11. 优化应用注册地址集合的排序处理性能
  12. 优化 根据 枚举名称 获取 枚举的处理性能,提高代码复用率
  13. 简单优化部分 JS 代码的执行性能
  14. 使用断点增量循环分页查询,避免较大数据量下的慢查询问题
  15. 优化 Map等集合的处理性能,例如:
new HashMap(); 
=>  // 默认初始化16,如果只有3个元素,只需要初始化为 4 即可
new HashMap(4, 1F);


if( map.containsKey( key ) ){
  Object val = map.get(key);
  // 使用 val
}
=> // 在 map 中 value 没有 null 时,避免对一个元素进行两次 hash 检索
Object val = map.get( key )
if( val != null ){
   // 使用 val
}


for(String key : map.keySet()){
  Object val = map.get(key);
  // 使用 key 和 val
}
=> // 避免在遍历过程中调用 map.get 浪费性能
for(Map.Entry<String, Object> entry : map.entrySet()){
  String key = entry.getKey();
  Object val = entry.getValue();
  // 使用 key 和 val
}

Other information:

  1. com.xxl.job.admin.core.cron.CronExpression#findNextWhiteSpace() 疑似有bug,但为了保持业务逻辑不变,我暂未改动,建议核实一下。
  2. 目前项目中使用了 Gson 和 Jackson 两个 JSON 库,是否可以考虑合并统一为一个,比如统一使用 Spring 默认自带的 Jackson。

@sdhzwc
Copy link

sdhzwc commented Nov 17, 2024

工作流调度这个实现一下就好了😄

@wangkeshuai1
Copy link

看起来不错

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants