当前位置: 首页 > article >正文

Java循环操作哪个快

文章目录

  • Java循环操作哪个快
    • 一、引言
    • 二、循环操作性能对比
      • 1、普通`for`循环与增强`for`循环
        • 1.1、代码示例
      • 2、`for`循环与`while`循环
        • 2.1、代码示例
      • 3、循环优化技巧
        • 3.1、代码示例
    • 三、循环操作的适用场景
    • 四、使用示例
    • 五、总结

Java循环操作哪个快

在这里插入图片描述

一、引言

在Java开发中,循环操作是常见的编程任务,但不同的循环方式在性能上存在差异。选择合适的循环结构对于优化程序性能至关重要。本文将探讨几种常见的Java循环操作的性能差异,并通过代码示例和测试结果进行分析。

二、循环操作性能对比

1、普通for循环与增强for循环

普通for循环通过索引访问集合元素,而增强for循环(for-each循环)通过迭代器实现。在性能测试中,普通for循环通常优于增强for循环,尤其是在处理大数据量时。

1.1、代码示例

java复制

// 普通for循环
long startTime = System.currentTimeMillis();
int sum = 0;
for (int i = 0; i < 1000000000; i++) {
    sum += i;
}
System.out.println("普通for循环耗时:" + (System.currentTimeMillis() - startTime));

// 增强for循环
startTime = System.currentTimeMillis();
sum = 0;
for (int i : new int[1000000000]) {
    sum += i;
}
System.out.println("增强for循环耗时:" + (System.currentTimeMillis() - startTime));

2、for循环与while循环

for循环和while循环在逻辑上是等价的,但在某些情况下,for循环的性能略优于while循环,因为for循环的结构更紧凑。

2.1、代码示例

java复制

// for循环
long startTime = System.currentTimeMillis();
int sum = 0;
for (int i = 0; i < 1000000000; i++) {
    sum += i;
}
System.out.println("for循环耗时:" + (System.currentTimeMillis() - startTime));

// while循环
startTime = System.currentTimeMillis();
sum = 0;
int i = 0;
while (i < 1000000000) {
    sum += i;
    i++;
}
System.out.println("while循环耗时:" + (System.currentTimeMillis() - startTime));

3、循环优化技巧

通过拆分循环操作可以提高性能。例如,将一个循环拆分为多个并行操作,可以充分利用CPU的多核优势。

3.1、代码示例

java复制

// 普通循环
long startTime = System.currentTimeMillis();
long sum = 0;
for (int i = 1; i <= 1000000000; i++) {
    sum += i;
}
System.out.println("普通循环耗时:" + (System.currentTimeMillis() - startTime));

// 拆分循环
startTime = System.currentTimeMillis();
long sum1 = 0, sum2 = 0, sum3 = 0, sum4 = 0;
for (int i = 1; i <= 1000000000; i += 4) {
    sum1 += i;
    sum2 += i + 1;
    sum3 += i + 2;
    sum4 += i + 3;
}
System.out.println("拆分循环耗时:" + (System.currentTimeMillis() - startTime));

三、循环操作的适用场景

不同的循环操作适用于不同的场景。普通for循环适合需要精确控制迭代次数的场景,而增强for循环适合遍历集合或数组。

四、使用示例

以下是一个使用普通for循环和增强for循环的示例,展示了在不同场景下的性能差异。

java复制

import java.util.ArrayList;
import java.util.List;

public class LoopExample {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < 10000000; i++) {
            list.add(i);
        }

        // 普通for循环
        long startTime = System.currentTimeMillis();
        int sum = 0;
        for (int i = 0; i < list.size(); i++) {
            sum += list.get(i);
        }
        System.out.println("普通for循环耗时:" + (System.currentTimeMillis() - startTime));

        // 增强for循环
        startTime = System.currentTimeMillis();
        sum = 0;
        for (int num : list) {
            sum += num;
        }
        System.out.println("增强for循环耗时:" + (System.currentTimeMillis() - startTime));
    }
}

五、总结

在Java中,普通for循环通常比增强for循环和while循环具有更好的性能,尤其是在处理大数据量时。通过拆分循环操作,可以进一步提高性能。开发者应根据具体的业务需求和场景选择合适的循环方式,以优化程序的性能。


版权声明:本博客内容为原创,转载请保留原文链接及作者信息。

参考文章

  • Java循环操作哪个快?-阿里云开发者社区
  • 性能】【算法】for循环,性能提高_java for循环优化-CSDN博客

http://www.kler.cn/a/531804.html

相关文章:

  • C基础寒假练习(2)
  • 【汽车电子软件架构】AutoSAR从放弃到入门专栏导读
  • potplayer字幕
  • 01.双Android容器解决方案
  • 记录 | 基于MaxKB的仿小红书旅游文章AI制作(含图文、视频)
  • LeetCode:300.最长递增子序列
  • bootstrap.yml文件未自动加载问题解决方案
  • 【回溯+剪枝】优美的排列 N皇后(含剪枝优化)
  • 【游戏设计原理】98 - 时间膨胀
  • SpringBoot 引⼊MybatisGenerator
  • 【C++ STL】vector容器详解:从入门到精通
  • IBM Cognos Analytics配置LTPA SSO单点登录
  • 【02】智能合约与虚拟机
  • Node 服务器数据响应类型处理
  • SLAM技术栈 ——《视觉SLAM十四讲》学习笔记(一)
  • c++ stl 遍历算法和查找算法
  • BMS和无刷电机产品拆解学习
  • TryHackMe: TryPwnMe Two
  • 使用递归解决编程题
  • 编程AI深度实战:AI编程工具哪个好? Copilot vs Cursor vs Cody vs Supermaven vs Aider
  • redis教程
  • 《苍穹外卖》项目学习记录-Day11销量排名统计
  • JavaScript系列(55)--安全编程实践详解
  • 代码随想录二刷|二叉树7
  • Leetcode 3440. Reschedule Meetings for Maximum Free Time II
  • 刷题汇总一览