`
supportopensource
  • 浏览: 521739 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

for循环的优化

阅读更多
在程序中经常用到for循环,当一些算法实时性要求非常高时,对for循环的优化有时可以带来意想不到的收获。
通常使用的for循环语句形式有:
for(int i=0;i<n;i++)
{
}

这种循环形式,我想一般人都用过,对这种循环的优化如下:
for (int i=n;i>0;i--)
{
}


这里涉及到编译器对判断语句的编译,在CCS中,对于i>0使用的是AGT也即大于等于0的后缀,而对于i<n,会多执行一条减操作的语句,然后再进行比较,这样,相对于第一种循环,第二种操作将直接减少N条指令执行时间,而这时间的节约只是一个编程习惯上稍改一下即可实现的。

例程1:
public class TestFor{
	private void testFor(){//没有优化的for语句
        	for(int i=0;i<1000000;i++){
            		System.out.print("f");
        	}  
    	}
	private void testFor1(){//优化了的for语句  
        	for(int i=999999;i>=0;i--){
            		System.out.print("f");  
        	}  
    	}    
	public static void main(String args[]){
		TestFor forObject = new TestFor();
		long startTime=System.currentTimeMillis();   //获取开始时间   
		forObject.testFor();
		//forObject.testFor1();
		long endTime=System.currentTimeMillis(); //获取结束时间   
		System.out.println("程序运行时间: "+(endTime-startTime)+"ms"); 
	}
}

程序运行结果:

(1)执行:forObject.testFor();的结果为:54977ms
(2)执行:forObject.testFor1();的结果为:53958ms


例程2:
public class TestFor{
	private void testFor(){ //没有优化的for语句 
        	for(int i=0;i<1000;i++){
			for(int j=0;j<100;j++){
            			for(int k=0;k<10;k++){
					System.out.print("f");
				}
			}
        	}  
    	}
	private void testFor1(){//优化了的for语句 
        	for(int i=9;i>=0;i--){  
			for(int j=99;j>=0;j--){
            			for(int k=999;k>=0;k--){
					System.out.print("f");
				}
			}  
        	}  
    	}    
	public static void main(String args[]){
		TestFor forObject = new TestFor();
		long startTime=System.currentTimeMillis();   //获取开始时间   
		forObject.testFor();
		//forObject.testFor1();
		long endTime=System.currentTimeMillis(); //获取结束时间   
		System.out.println("程序运行时间: "+(endTime-startTime)+"ms"); 
	}
}

程序运行结果:

(1)执行:forObject.testFor();的结果为:65283ms
(2)执行:forObject.testFor1();的结果为:64963ms


从以上两个程序可以看出:优化后的for循环比没有优化的for循环的执行效率要高,并且随着循环的次数越多,优化后的for循环和没有优化的for循环的执行效率的差别就会越大。

从例程2还可以看出:将循环次数多的写在内部,次数小的写在外部,减少了外层判断的次数,可以提高for循环的执行效率。

同时,数字尽量和0比较,也可以加快程序的运行速度。

分享到:
评论

相关推荐

    多重For循环 优化

    ### 多重For循环优化分析 #### 原始代码分析 原始代码示例如下: ```java for(int i = 0; i ; i++) { for(int j = 0; j ; j++) { for(int k = 0; k ; k++) { log(i * j * k); } } } ``` 此段代码中的嵌套循环...

    C++ For循环优化版

    C++循环冒泡法优化 在看到for循环冒泡排序(c++) 后 再次优化了一下,它的程序不能运行,我运行优化的成功了,对初学者理解有很大帮助(还有注释)

    python for循环优化

    本文以一个实际案例出发,探讨如何优化Python的for循环以提高程序效率。 一、问题背景 在项目初期,由于用户数量较少,使用了两层嵌套的for循环来完成计算任务,耗时1-2小时。然而,随着用户基数的增长,项目运行...

    js,java提高编程效率之【for循环优化】.pdf

    本文主要讨论了如何优化JavaScript和Java中的for循环,以提高编程效率。 首先,我们来回顾一下传统的for循环语法: ```javascript for(var i = 0; i ; i++) { // 对arrays[i]进行处理 } ``` 这段代码适用于遍...

    性能测试_性能测试_c#循环优化_

    例如,一个简单的for循环优化前后的对比可能是这样的: ```csharp // 未优化的for循环 for (int i = 0; i ; i++) { // 执行某个操作 } // 优化后的并行for循环 Parallel.For(0, 1000000, i =&gt; { // 执行相同的...

    Java for循环性能优化实现解析

    1. 嵌套循环优化 在Java中,嵌套循环是一种常见的循环结构。但是,如果我们不合理地使用嵌套循环,可能会给程序的性能带来很大的影响。解决方法是遵循“外小内大”的原则,即将小循环放在大循环的内部。这可以显著...

    Java for循环Map集合优化实现解析

    "Java for循环Map集合优化实现解析" Java for循环Map集合优化实现解析是Java编程语言中的一种高效的集合优化技术。该技术通过使用Map集合来优化for循环的性能,减少循环次数,从而提高程序的执行效率。 Java for...

    Codesys V3510 For循环案例分享

    同时,还可以了解如何调试和优化For循环,以提高程序效率。 总的来说,对于工业自动化的新手来说,熟练掌握Codesys V3 3510中的For循环是提升编程能力的关键一步。通过深入学习和实践这些案例,不仅可以提高编程...

    深入探究JavaScript中for循环的效率问题及相关优化

    然而,传统的for循环在处理复杂逻辑或大数据集合时可能会影响脚本的执行效率,优化循环的效率对于提高代码性能至关重要。 首先,传统的for循环的效率问题主要体现在两个方面:一是循环体内部代码的执行时间;二是...

    Vivado HLS 视频课程总结

    18 for循环优化-嵌套的for循环优化 54 18.1 循环嵌套类型 54 18.2 Perfect loop nest示例 55 18.3 Imperfect loop nest示例 56 19 for循环优化-其他优化方法 59 19.1 for循环的并行性 59 19.2 for循环pipeline时的...

    快速学习C语言中for循环语句的基本使用方法

    在C语言中,for循环语句是编程中最常用的循环结构之一,它提供了简洁且灵活的方式来重复执行一段代码。本文将详细介绍C语言中for循环的基本使用方法,并通过一个温度转换程序的例子来阐述其工作原理。 首先,for...

    Javascript-For-Loop-Optimization:Javascript FOR循环优化

    JavaScript循环优化 为什么需要代码优化? 代码优化是用于提高代码质量和效率的一组代码修改方法。 可以对程序进行优化,使其尺寸更小,消耗更少的内存,更快地执行或执行更少的输入/输出操作(来自Google)。 因此...

    编译原理课设for循环

    课设中还提供了"编译课设for循环简单优先三地址.doc"文档,这很可能是详细的项目说明或者报告,包含了算法描述、设计思路、实现细节和可能的优化措施。而"input.txt"则可能包含了一些示例的for循环源代码,用于测试...

    Java代码循环的优化

    下面将详细介绍标题及描述中提到的几个循环优化技巧: 1. **数字比较尽量和0比较** 在Java中,当进行数值比较时,如果可能的话,应尽可能地将其中一个值设置为0来进行比较。这是因为大多数处理器在处理与0的比较...

    FOR循环语句的翻译程序设计(LL(1)法、输出四元式)

    在编程语言的编译原理中,FOR循环语句的翻译是构建编译器的一个关键环节。FOR循环是一种常见的控制流程结构,广泛应用于各种编程语言,用于执行一系列重复操作。本主题将深入探讨如何使用LL(1)分析法来设计翻译程序...

    matlab开发-循环优化方法

    在MATLAB开发中,循环优化是一项关键技能,它旨在提高代码执行效率,减少计算时间,尤其是在处理大数据集或复杂计算时。本主题将深入探讨如何通过优化循环来提升MATLAB程序的性能。以下是对给定文件中可能涉及的几个...

    for循环简单操作 数字的遍历

    `for`循环的优化与注意事项 - 在循环体内避免进行复杂的计算,以免影响性能。 - 如果需要在循环外部使用循环变量,记得在循环外声明。 - 避免在循环体中修改循环变量,可能导致意料之外的结果。 - 使用`break`或`...

    FOR循环语句的翻译程序设计

    - 目的:FOR循环语句的翻译程序设计旨在将源代码中的FOR循环转换为机器或虚拟机可以理解的形式,通常是中间代码或目标代码,以便于后续的代码优化和机器码生成。 - 设计内容:包括词法分析器、语法分析器(解析器...

    特殊的for循环加法运算

    在探讨“特殊的for循环加法运算”这一主题时,我们首先需要理解其核心概念与应用场景。根据提供的代码片段,我们可以观察到一个典型的Java程序结构,其中包含了一个利用for循环进行特殊加法运算的过程。这段代码旨在...

    循环优化,要充分利用CPU的指令缓存,就要充分分解小的循环。特别是当循环体本身很小的时候,分解循环可以提高性能。

    例如,将for循环中的do_stuff(i)连续调用多次,可以减少比较指令的次数,提升执行速度。但是,如果循环内有中间变量修改,编译器可能不会自动展开,此时需要手动进行。此外,循环展开可能导致代码体积增大,对于有...

Global site tag (gtag.js) - Google Analytics