Java 代码性能优化

为了能提高代码的运行效率,需要在代码中注意以下实现逻辑

1、减少IO操作

常见的IO操作有:

  • 数据库操作
  • 接口请求
  • IO流

举例说明

反例:

# 拼接查询
for(User user: users){
    UserGrade grade = userGradeDao.selectById(user.getId());
    user.setGrade(grade.getGrade());
}

# 循环插入
for(Long id:ids){
    User user = new User();
    user.setId(id);
    user.setName("Name");
    userDao.insert(user);
}

正例:

# 优先构造条件,一次查询所有结果在内存中组装
Map<Long, User> userMap = new HashMap<Long,User>();
List<Long> ids = new ArrayList<Long>();
for(User user: users){
    userMap.put(user.getId(), user);
    ids.add(user.getId());
}
List<UserGrade> grades = userGradeDao.selectByIds(ids);
if (CollectionUtils.isNotEmpty(grades){
    for(UserGrade grade: grades){
        User user = userMap.get(grade.getUserId());
        if (user != null) user.setGrade(grade.getGrade());
    }
}

# 批量插入
List<User> users = new ArrayList(ids.size());
for(Long id:ids){
    User user = new User();
    user.setId(id);
    user.setName("Name");
    users.add(user);
}
userDao.insertBatch(users);

2、减少循环

循环是代码中必不可少的业务处理, 然后也是影响业务处理最常见的性能问题
3个size为100 的list 嵌套循环代码需要执行1,000,000次,如果每次20毫秒,系统可能直接崩溃
所有尽量减少循环嵌套,特别是未知size或者大size的循环

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。