美文网首页
Java 代码性能优化

Java 代码性能优化

作者: pokerface_max | 来源:发表于2019-12-09 10:39 被阅读0次

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

    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的循环

    相关文章

      网友评论

          本文标题:Java 代码性能优化

          本文链接:https://www.haomeiwen.com/subject/nkkbgctx.html