For 循环优化,提升效率
首先,我们初始化一个集合 list,如下:
List<String> list = new ArrayList<String>();
方法一:最常规的不加思考的写法
优点:较常见,易于理解
缺点:每次都要计算list.size()
for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}
方法二:数组长度提取出来
int m = list.size();for (int i = 0; i < m; i++) {System.out.println(list.get(i));}
优点:不必每次都计算
缺点:1、m的作用域不够小,违反了最小作用域原则 2、不能在for循环中操作list的大小,比如除去或新加一个元素
方法三:数组长度提取出来
for (int i = 0, n = list.size(); i < n; i++) {System.out.println(list.get(i));}
优点:不必每次都计算 ,变量的作用域遵循最小范围原则
缺点:1、m的作用域不够小,违反了最小作用域原则 2、不能在for循环中操作list的大小,比如除去或新加一个元素
方法四:采用倒序的写法
优点:不必每次都计算 ,变量的作用域遵循最小范围原则
缺点:1、结果的顺序会反 2、看起来不习惯,不易读懂
适用场合:与显示结果顺序无关的地方:比如保存之前数据的校验
for (int i = list.size() - 1; i >= 0; i--) {System.out.println(list.get(i));}
方法五:i++ 改为 ++i
优点:前置版本的递增运算符避免了不必要的工作,它把值加1后直接返回改变了的运算对象。
缺点:使用起来不一定习惯。
for (int i = 0, n = list.size(); i < n; ++i) {System.out.println(list.get(i));}
方法六:循环嵌套外小内大原则
for (int i = 0; i < 100; i++) {for (int j = 0; j < 100000; j++) {}}
方法七:循环嵌套提取不需要循环的逻辑
//前: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;}
方法八:异常处理写在循环外面
for (int i = 0; i < 10; i++) {try {} catch (Exception e) {}}
异常在循环外
try {for (int i = 0; i < 10; i++) {}} catch (Exception e) {}
方法九:循环条件使用<要快于<=,>和>=同理
方法十:for循环的并行(C#的Parallel.For),要求每一程的循环,逻辑依赖关系相对独立。
方法十一:循环嵌套提取不需要循环的变量。
//前
int a=1,b=2;
for(int i=0;i<row.size();i++)
{i=i*a*b;}//后int a=1,b=2;int c=a*b;
for(int i=0;i<row.size();i++)
{i=i*c;}
For 循环优化,提升效率相关推荐
- DRO:SFM任务中的深度循环优化器(阿里巴巴AI Lab)
代码.论文地址:在公众号「3D视觉工坊」,后台回复「DRO」,即可直接下载. Motivation: 解决一个优化问题,常见的优化器比如梯度下降法, 牛顿法等, 一般会先计算梯度------>再 ...
- 三重for循环优化_MATALB中对循环操作的优化
众所周知,MATLAB程序效率最低最有潜力的地方便是循环了.最常见的循环莫过于对矩阵中的每一个元素进行操作,对于编程思维还在C语言或者C++,JAVA的人来说,第一反应就是两层循环,先来个 " ...
- php双层foreach,php 双层foreach 如何提升效率
https://segmentfault.com/q/1010000011609822 两个数组都是近万条元素 切都是二维数组 请问如何优化提高效率 php版本 5.3 foreach ($array ...
- 深度循环优化器DRO:从视频流估计深度和相机轨迹
©作者|朝言 学校|香港科技大学 (HKUST) 研究方向|计算机视觉 我们提出了一个基于神经网络的端对端深度循环优化器,能够实时从视频中计算出视频流中每张图的深度和对应的相机轨迹,效果超越了之前所有 ...
- 云队友丨如何提升效率,所有方法都在这里
第三季·大复盘 新年好! 专栏第三季度「效率升级」的课程已经全部讲完了,趁着还没开工,我来带你回顾一遍全季的内容,帮你把这些知识点,串联成一整个面,形成一套完整的知识结构,以便于你能够更好地吸收,转化 ...
- 谷歌发布 Android 8.1 首个开发者预览版,优化内存效率
今晨,谷歌推出了 Android 8.1 首个开发者预览版,此次升级涵盖了针对多个功能的提升优化,其中包含对 Android Go (设备运行内存小于等于 1 GB)和加速设备上对机器学习的全新神经网 ...
- 基于中间代码的优化中,循环的查找算法有哪些?循环优化的方法有哪些?举例说明。
基于中间代码的优化中,循环的查找算法有哪些?循环优化的方法有哪些?举例说明. 基于中间代码的优化中,循环的查找算法有哪些?循环优化的方法有哪些?举例说明. 西北工业大学编译原理课件第八章 代码优化.p ...
- 爱奇艺谢丹铭:用AI让创作者提升效率,让消费者简单快乐丨MEET2021
编辑部 整理自 MEET 2021 量子位 报道 | 公众号 QbitAI AI技术,究竟能在哪些行业实现规模化应用? 这是视频行业面对AI浪潮,交出的一份答卷: 素材智能检索.老电影修复.音色克隆. ...
- 模式识别新研究:微软OCR两层优化提升自然场景下的文字识别精度
模式识别新研究:微软OCR两层优化提升自然场景下的文字识别精度 发表于2015-03-30 23:46| 6209次阅读| 来源CSDN| 8 条评论| 作者霍强 模式识别微软亚洲研究院微软OCR文字 ...
最新文章
- 如何理解机器学习中的嵌入 (Embeddings)?
- 洛谷P1182 数列分段Section II 二分答案
- Xamarin.Forms教程下载安装Windows版的Xamarin开发工具
- 实验任务四:登录界面、实验任务五:猜数字
- 5分钟了解 Python 中的super函数是如何实现继承的
- [Z]为Web程序员解毒:9个IE常见Bug的解决方案
- int*与(int*)的差别
- Firefox(火狐浏览器)彩蛋
- 《你不常用的c#之五》:Thread与ThreadPool的内存之战
- Android开发指南中文版(十三)User Interface-Notifications
- Lamda和kappa架构
- 工作经验--他人经验
- Error opening data file Tesseract-OCR\tessdata/eng.traineddata问题解决
- SVN 代码与文件管理小记
- C++密钥生成和数据加密
- 在AndroidStudio中使用ARCore
- 英语语法总结_02 名词词组与代名词
- Android第三方开发包之高德地图SDK使用介绍
- 去哪儿cli2项目总结
- OpenVINO示例介绍