java中for循环的优化

白色玫瑰 程序猿

时间: 2023-07-11 阅读: 1 字数:3481

{}
作为java中三大循环之一的for循环,大家应该用的特别多,今天那就以我在项目中遇到的for循环优化来聊一聊for循环的优化. 首先是for循环的写法上面 最原始的写法 public void optimalizeFor() { List list = new ...
作为java中三大循环之一的for循环,大家应该用的特别多,今天那就以我在项目中遇到的for循环优化来聊一聊for循环的优化.

首先是for循环的写法上面

最原始的写法

public void optimalizeFor() {
   List list = new ArrayList<>();
   for (int i = 0; i < list.size(); i++) { 
     }      
}
调优写法
public void optimalizeFor() {
   List list = new ArrayList<>();
    for (int i = 0, len = list.size(); i < len; i++) {
      }
     }
结果
优化前用时:47871
优化后用时:566
为什么
在循环中,循环条件会被反复计算,如果不使用复杂表达式,而是使循环条件不变的话,程序将会运行的更快,所以在循环中应该避免使用复杂的表达式
java之循环嵌套
外小内大型
            for (int i = 0; i < 10; i++) {
               for (int j = 0; j < 100000; j++) {
               }
            }
外大内小型
            for (int i = 0; i < 100000; i++) {
               for (int j = 0; j < 10; j++) {
               }
            }
结果
            优化前用时:7541608
            优化后用时:4316
为什么
      从结果可以看出来所用时间的差异非常大,这个就像拿大文件和小文件一样的道理
循环嵌套提取不需要循环的逻辑
无用逻辑再循环中
            int a = 10, b = 11;
            for (int i = 0; i < 10; i++) {
               i = i * a * b;
            }
无用逻辑再循环外
            int c = a * b;
            for (int i = 0; i < 10; i++) {
               i = i * c;
            }
结果
            优化前用时:48664
            优化后用时:651
为什么
      还是像之前说到的,避免在循环中重复的计算发生
异常处理
异常在循环中
            for (int i = 0; i < 10; i++) {
               try {

               } catch (Exception e) {

               }
            }
异常在循环外
            try {
               for (int i = 0; i < 10; i++) {
               }
            } catch (Exception e) {

            }
结果
            优化前用时:33916
            优化后用时:489
为什么
      每次抓捕异常时非常耗时的,应该放在循环外一次性抓取,而不是应该放在循环内去每循环一次都抓取

原文地址:https://blog.csdn.net/dongnan591172113/article/details/51788021?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168904443816800184167648%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=168904443816800184167648&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-19-51788021-null-null.142^v88^control_2,239^v2^insert_chatgpt&utm_term=java%E4%BC%98%E5%8C%96

本文章网址:https://www.sjxi.cn/detil/11c1c183ee1f443fa5e713b643686ea1

最新评论

当前未登陆哦
登陆后才可评论哦

湘ICP备2021009447号

×

(穷逼博主)在线接单

QQ: 1164453243

邮箱: abcdsjx@126.com

前端项目代做
前后端分离
Python 爬虫脚本
Java 后台开发
各种脚本编写
服务器搭建
个人博客搭建
Web 应用开发
Chrome 插件编写
Bug 修复