Stream流-for、foreach、stream性能比较-《Java笔记》

admin 2025-10-19 02:40:28 编程 来源:ZONE.CI 全球网 0 阅读模式

Java for foreach stream

10000数据

for循环

首先,10000数据的for循环,代码如下:

  1. public class ForTest {
  2. public static void main(String[] args) {
  3. Long startTime = System.currentTimeMillis();
  4. formMethod();
  5. Long endTime = System.currentTimeMillis();
  6. System.out.println("time_total:" + (endTime - startTime));
  7. }
  8. public static void formMethod(){
  9. for (int i = 0; i < 10000; i++) {
  10. System.out.println("__________for循环____________");
  11. }
  12. }
  13. }

测试结果:2021-05-21-15-30-20-244835.png运行多次,时间基本落在100内,90左右。

foreach循环

同样数据量,代码如下:

  1. public class ForTest {
  2. public static void main(String[] args) {
  3. List<Integer> lists = new ArrayList<>();
  4. for (int i = 0; i < 10000; i++) {
  5. lists.add(i);
  6. }
  7. Long startTime = System.currentTimeMillis();
  8. formMethod(lists);
  9. Long endTime = System.currentTimeMillis();
  10. System.out.println("time_total:" + (endTime - startTime));
  11. }
  12. public static void formMethod(List<Integer> lists){
  13. lists.forEach(i->{
  14. System.out.println("__________forEach____________");
  15. });
  16. }
  17. }

测试结果:2021-05-21-15-30-20-379494.png运行多次,时间基本落在150左右。增强型效果不如for循环~

Stream

同样数据量,代码如下:

  1. public class ForTest {
  2. public static void main(String[] args) {
  3. List<Integer> lists = new ArrayList<>();
  4. for (int i = 0; i < 10000; i++) {
  5. lists.add(i);
  6. }
  7. Long startTime = System.currentTimeMillis();
  8. formMethod(lists);
  9. Long endTime = System.currentTimeMillis();
  10. System.out.println("time_total:" + (endTime - startTime));
  11. }
  12. public static void formMethod(List<Integer> lists){
  13. lists.stream().forEach(i->{
  14. System.out.println("__________stream处理____________");
  15. });
  16. }
  17. }

测试结果:2021-05-21-15-30-21-422670.png基本和增强型for循环效率差别不大。 :::success 结论:1万以内的数据,for循环的性能要高于foreach和stream; :::

1000万数据

数据加到1000万,代码不变,看结果:

for循环

2021-05-21-15-30-21-531380.png时间落在43240附近。

foreach循环

2021-05-21-15-30-21-678982.png基本和for循环效率差别不大。

Stream

2021-05-21-15-30-21-861496.png基本和for循环,增强型for循环效率差别不大。Stream的优势在于,提供了并行处理(parallelStream()方法),即stream api提供了异步处理机制,可以充分利用CPU核数,大大提升效率! :::success 结论:数据量上去之后,测试三种遍历方式,基本已经没有什么差距了,但是Stream提供并行处理,在数据量大了之后,效率会明显增强。(但是单核CPU,Stream并行处理可能会效率更慢) :::

以太坊cppgolang区别 编程

以太坊cppgolang区别

以太坊是一种去中心化的开源平台,它采用智能合约技术,旨在构建和运行不受干扰的分布式应用程序。作为目前最受欢迎的区块链平台之一,以太坊提供了多种编程语言的支持,其
progolang 编程

progolang

Go语言(Golang)是由Google开发的一门静态类型编程语言。作为一名专业的Golang开发者,我深知这门语言的优势和特点。在本文中,我将介绍Golang
golangn个发送者 编程

golangn个发送者

Golang是一种开源的编程语言,由Google团队开发,旨在提高程序的并发性和简化软件开发过程。在Go语言中,有时需要向多个接收者发送信息。本文将介绍如何在G
golang技能图谱 编程

golang技能图谱

从互联网行业的快速发展到人工智能技术的日益成熟,各种编程语言也应运而生。而在这众多的编程语言中,Golang(即Go)作为一门强大且高效的开发语言备受关注。Go
评论:0   参与:  7