首页 > 其他分享 >for、foreach、stream性能比较

for、foreach、stream性能比较

时间:2024-08-06 11:42:03浏览次数:4  
标签:stream void list System foreach println 性能

1、for循环

public static void main(String[] args) {
   	Long startTime = System.currentTimeMillis();
    formMethod();
    Long endTime = System.currentTimeMillis();
    System.out.println("result:" + (endTime - startTime)); 
}

public static void formMethod(){
    for (int i = 0; i < 10000; i++) {
        System.out.println("start::::::::::::");
    } 
 }

2、foreach循环(for循环的增强版)


​```
public static void main(String[] args) {
    List<Integer> list = new ArrayList<Integer>();
    for (int i = 0; i < 10000; i++) {
        list.add(i);
    }
    Long startTime = System.currentTimeMillis();
    foreachMethod(list);
    Long endTime = System.currentTimeMillis();
    System.out.println("result:" + (endTime - startTime));
}
​```

/**

* foreach
* @param list
  */
  public static void foreachMethod(List<Integer> list){
    list.forEach(i ->{
        System.out.println("++++++++++++");
    });
  }

结论:通过代码测试发现在1万以内的数据,for循环比foreach效率要高一些;但是10万以内数据的时候,foreach效率更高一些!

foreach [10万数据时间 1112 1165 1203 1115] [1万数据 235 146 176 164 175]

for循环 [10万数据时间 1330 1437 1347] [1万数据 110 109 141]

3、stream api

(1)、串行处理,即同步处理

  • public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();
        for (int i = 0; i < 10000; i++) {
            list.add(i);
        }
        Long startTime = System.currentTimeMillis();
        streamMethod(list);
        Long endTime = System.currentTimeMillis();
        System.out.println("result:" + (endTime - startTime));
    }
    
    /**
    
    * stream 串行处理
    * @param list
      */
      public static void streamMethod(List<Integer> list){
        list.stream().forEach(i ->{
            System.out.println("========");
        });
      }
      
    

    结论:1万以内的数据,for循环的性能要高于foreach和stream;10万以内的数据明显可以看出stream效率最高,其次foreach,最后是for。

[10万数据时间 854 892 789 844][1万数据 172 156 219 172 171]

(2)并行处理,即stream api提供了异步处理机制

  • public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();
        for (int i = 0; i < 10000; i++) {
            list.add(i);
        }
        Long startTime = System.currentTimeMillis();
        parallelStreamMethod(list);
        Long endTime = System.currentTimeMillis();
        System.out.println("result:" + (endTime - startTime));
    }
    /**
    
    * stream 并行处理
    * @param list
      */
      public static void parallelStreamMethod(List<Integer> list){
        list.parallelStream().forEach(i ->{
            System.out.println("========");
        });
      }
    

    结论:1万以内的数据,for循环的性能要高于foreach和stream;10万以内的数据明显可以看出stream效率最高,其次foreach,最后是for。

[10万数据时间 893 844 914 972][1万数据 219 203 234 188 ]

标签:stream,void,list,System,foreach,println,性能
From: https://www.cnblogs.com/luoyiwen123/p/18344831

相关文章

  • 高性能USB转串口适配器,让USB和串行接口轻松实现双向通信!
    多功能数字接口转发器,让USB和串行接口轻松实现双向通信!高性能USB转串口适配器,助力你的嵌入式程序开发!USB转串口适配器可编程开发板TYPE接口是一种多功能的数字接口物理层协议转发器,可以转换USB接口和串行接口之间的双向通信。它支持多种嵌入式程序开发,并可以自由制定转发透传逻......
  • JVM知识总结(性能调优)
    文章收录在网站:http://hardyfish.top/文章收录在网站:http://hardyfish.top/文章收录在网站:http://hardyfish.top/文章收录在网站:http://hardyfish.top/性能调优何时进行JVM调优?遇到以下情况,就需要考虑进行JVM调优了:Heap内存(老年代)持续上涨达到设置的最大内存值Full......
  • 表面贴装型晶体谐振器(汽车电子用):DSX321G/DSX321GK/DSX320GE 的卓越性能
    在汽车电子领域的不断发展与创新中,精准而稳定的频率控制成为保障汽车各项系统高效运行的关键。表面贴装型晶体谐振器/MHz带晶体谐振器,特别是DSX321G、DSX321GK和DSX320GE系列,以其出色的性能和独特的特点,在汽车电子系统中发挥着至关重要的作用。一、汽车电子对晶体谐振......
  • EF Core性能优化技巧
    EFCore性能优化技巧 代码层面的优化1.使用实例池EFCore2.0为DbContext引入新的注册方式:透明地注册了DbContext实例池,使用这种方式可以避免始终创建新的实例,EFCore将重置其状态并将其存储在内部池中;当下次请求新的实例时,将返回该共用实例,而不是设置新的实例使用示例:......
  • python 发送buffer类型数据, 发送octet-stream类型数据, 发送Uint8Array类型数据
       #-*-coding:utf-8-*-#@Time:2024/7/3120:20#@Author:Dragonjs_code=r"""commonjsGlobal={};varprotobuf_min={exports:{}};(function(module){!function(g){varr2,e2,i2;r2={1......
  • 性能测试之内存瓶颈问题分析与调优
    注意:内存问题是性能分析与调优非常常见的一类问题(内存不足/内存泄露/内存溢出等)一、内存概念:计算机的存储系统分为主存储系统(内存)辅助存储系统(外存)外存:计算机的辅助存储器,包括硬盘、软盘、光盘、网络云盘等【输入-键盘,鼠标,输出-屏幕,音频视频】内存:内存(Memory)又称主存,......
  • 如何进行淘客返利系统的性能测试与优化
    如何进行淘客返利系统的性能测试与优化大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在淘客返利系统中,性能测试与优化是保证系统高效、稳定运行的关键。本文将详细介绍如何对淘客返利系统进行性能测试与优化,并通过Java代码实例进行说明。一、......
  • 数组:性能优化与错误处理的艺术
    引言在编程过程中,我们会发现这么一件事,有时候需要用到很多变量,十个、百个,甚至千个,如果一个个变量都去声明的话,那么工作量是非常大的,也导致代码很臃肿,所以这个时候数组就出现了。数组可以用来存储一系列数据类型一致的数据,这让我们在操作数据的时候会来的更加简易高效,接下来......
  • 性能测试瓶颈之CPU问题分析与调优
    一、CPU的简介CPU概念:CPU(中央处理器:CentralProcessingUnit),是一块超大规模的集成电路,是计算机的运算核心【拿到数据后先计算】和控制核心【然后再根据计算结果去控制】。功能:主要是解释计算机指令以及处理计算机软件中的数据。电脑中所有操作都由CPU负责读取指令,对指令译码并......
  • [三、渲染控制法]4. LazyForEach:数据懒加载
    LazyForEach从提供的数据源中按需迭代数据,并在每次迭代过程中创建相应的组件。当在滚动容器中使用了LazyForEach,框架会根据滚动容器可视区域按需创建组件,当组件滑出可视区域外时,框架会进行组件销毁回收以降低内存占用。接口描述LazyForEach(dataSource:IDataSource,......