• for循环、并行流、串行流效率比较


    User类
    import lombok.AllArgsConstructor;
    import lombok.Builder;
    import lombok.Data;
    import lombok.NoArgsConstructor;

    @Builder
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class User {
    int id;
    String name;
    int sex;
    int age;

    }

    测试类
    import org.springframework.web.bind.annotation.RestController;


    import java.time.LocalDateTime;
    import java.time.temporal.TemporalField;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.stream.Collectors;

    @RestController
    public class TestController {

    public static void main(String[] args) {
    List<User> userList = new ArrayList<>();
    for (int i = 0; i < 100; i++) {
    int sex = 0;
    if ((i & 1) == 1) {
    sex = 1;
    }
    User user = User.builder().id(i).name("刘-" + i).sex(sex).age(i).build();
    userList.add(user);
    }
    System.out.println("=====数据总量:" + userList.size());

    long beginTime = System.currentTimeMillis();
    int sumAge1 = 0;
    for (User user : userList) {
    sumAge1 += user.getAge();
    }
    long endTime = System.currentTimeMillis();
    System.out.println("=====增强for循环所用时间 " + (endTime - beginTime) + " 毫秒" + " ,计算结果" + sumAge1);

    beginTime = System.currentTimeMillis();
    int sumAge2 = userList.stream().collect(Collectors.summingInt(User::getAge));
    endTime = System.currentTimeMillis();
    System.out.println("=====顺序流所用时间 " + (endTime - beginTime) + " 毫秒, 计算结果" + sumAge2);


    beginTime = System.currentTimeMillis();
    int sumAge = userList.parallelStream().mapToInt(User::getAge).sum();
    endTime = System.currentTimeMillis();
    System.out.println("=====并行流所用时间 " + (endTime - beginTime) + " 毫秒, 计算结果" + sumAge);


    }

    }

    测试结果:

    一千五百万的时候并行流最快

    到20000000就内存溢出了。

    所以通常的处理逻辑for循环性能更优。

  • 相关阅读:
    数据挖掘算法-Apriori Algorithm(关联规则)
    分类指标准确率(Precision)和正确率(Accuracy)的区别
    数据预处理(完整步骤)
    linux下使用tar命令
    (LeetCode 135) Candy N个孩子站成一排,给每个人设定一个权重
    海量数据处理算法—Bit-Map
    Python 3.x 连接 pymysql 数据库
    visio扩大画布的大小
    中文latex去掉图片描述
    LaTeX 中文段首空格问题
  • 原文地址:https://www.cnblogs.com/lalalazar/p/12391393.html
Copyright © 2020-2023  润新知