`
sanyecao2314
  • 浏览: 135790 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

不恰当的使用for循环,会使速度慢千倍

阅读更多

测试发现,不恰当的使用for循环语法,会使查询效率慢千倍.谨记.

 

	/**
	 * TODO 测试发现.两种不同的for写法,list中46000条数据.效率差了1000多倍.
	 * 
	 * 2016年4月6日
	 * novelbio fans.fan
	 */
	public void testArray() {
		String filePathAndName = "GO-Analysis_BP_peak0_All.xlsx";

		List<List<String>> lsExcel = ExcelOperate.readLsExcel2007SheetFast(filePathAndName, 2);
		Object[] array = lsExcel.toArray();
		
		long time2 = System.currentTimeMillis();
		//第一种for写法
		List<String> lsContent = null;
		for (int i = 0; i < lsExcel.size(); i++) {
			lsContent = lsExcel.get(i);
			int len = lsContent.size();
		}
		long time3 = System.currentTimeMillis();
		System.out.println("process data=" + (time3 - time2));
		
		long time4 = System.currentTimeMillis();
		//第二种for写法
		for (List<String> lsData : lsExcel) {
			int len = lsData.size();
		}
		long time5 = System.currentTimeMillis();
		System.out.println("process2 data=" + (time5 - time4));
	}
	
	public void testArray2() {
		String filePathAndName = "GO-Analysis_BP_peak0_All.xlsx";

		List<List<String>> lsExcel = ExcelOperate.readLsExcel2007SheetFast(filePathAndName, 2);
		Object[] array = lsExcel.toArray();
		
		long time2 = System.currentTimeMillis();
		//第一种for写法
		List<String> lsContent = null;
		for (int i = 0; i < array.length; i++) {
			lsContent = (List<String>) array[i];
			int len = lsContent.size();
		}
		long time3 = System.currentTimeMillis();
		System.out.println("testArray2 process data=" + (time3 - time2));
		
		long time4 = System.currentTimeMillis();
		//第二种for写法
		lsContent = null;
		for (Object lsData : array) {
			lsContent = (List<String>) lsData;
			int len = lsContent.size();
		}
		long time5 = System.currentTimeMillis();
		System.out.println("testArray2 process2 data=" + (time5 - time4));
	}
	
	public void testArray3() {

		List<Integer> lsExcel = new ArrayList<>(50000);
		for(int i = 0; i < 50000; i++){
			lsExcel.add((int)(Math.random() * 10000));
		}
		
		long time2 = System.currentTimeMillis();
		//第一种for写法
		for (int i = 1; i < lsExcel.size(); i++) {
			int a = lsExcel.get(i);
			int len = a;
		}
		long time3 = System.currentTimeMillis();
		System.out.println("testArray3 process data=" + (time3 - time2));
		
		long time4 = System.currentTimeMillis();
		lsExcel.remove(0);
		//第二种for写法.
		for (Integer a : lsExcel) {
			int len = a;
		}
		long time5 = System.currentTimeMillis();
		System.out.println("testArray3 process2 data=" + (time5 - time4));
	}

执行结果.

process data=7804
process2 data=5
testArray2 process data=4
testArray2 process2 data=3
testArray3 process data=3
testArray3 process2 data=1

如 http://www.jianshu.com/p/2fecd8d66829所说对于用数组实现的,建议用普通的for循环,从该例测试来看.实际差距也不大.

但如果是list嵌套类型的.用普通for循环会慢上千倍.

分享到:
评论

相关推荐

    如何提升JavaScript的运行速度(循环篇).doc

    循环是JavaScript代码中常见的结构,但是不恰当的循环设计可能会严重拖慢程序运行速度,甚至导致浏览器出现“脚本失控”的警告。以下是对如何优化JavaScript循环的一些关键点的详细说明: 1. **避免在循环体中执行...

    matlab编程计算速度能提高100倍慢的原因是使用不对-matlab编程,计算速度能提高100倍。慢的原因,是使用不对.doc

    在MATLAB编程中,计算速度的提升潜力巨大,但为何有些程序执行效率低下,甚至比预期慢了100倍?这通常与编程方法密切相关,尤其是处理稀疏矩阵时。本文将探讨这个问题,并提供改进策略。 首先,让我们明确一点:...

    循环结构教学设计

    循环结构是算法与程序设计中的一种基本控制结构,教学设计的目标是让学生掌握 For/Next 循环语句的格式和执行步骤,并能够分析简单的 For/Next 循环语句的功能。教师可以通过实例选择,分析设计算法,恰当地使用三种...

    电脑运行速度慢怎么办.docx

    但是,随着使用时间的增长,我们常常会遇到电脑运行速度变慢的问题。这不仅影响工作效率,也会给我们的日常生活带来不便。那么,电脑运行速度慢到底是什么原因造成的呢?我们应该采取哪些措施来解决这一问题呢?接...

    Lua中数字for循环实例

    因此,在循环体内对循环变量的任何修改都只是在改变当前循环迭代的局部变量(`externalindex`),并不会影响到下一次迭代的值。 在Lua的源代码层面,`internalindex`和`externalindex`虽然名称相同,但实际上是不同...

    C语言程序设计——循环结构PPT学习教案.pptx

    在本篇教案中,我们将详细介绍三种基本的循环结构:while循环、do-while循环和for循环,同时分析它们的使用场景、区别和在实际应用中应注意的优缺点。 首先来看while循环。while循环是最基本的循环结构之一,它的...

    第3章 循环

    【循环】是编程语言中的重要控制结构之一,用于重复执行某段代码,直到满足特定条件为止。在C语言中,循环主要包括以下几种形式: ...同时,掌握如何在循环中恰当使用break和continue,能更灵活地控制循环行为。

    java代码-for循环嵌套练习。

    在Java编程语言中,`for`循环是一...总之,`for`循环嵌套是Java编程中不可或缺的一部分,它帮助我们处理多维度的数据结构和复杂的逻辑。通过不断练习和理解,你可以更好地掌握这一技巧,从而写出更加高效和优雅的代码。

    C语言循环结构教学设计方案.doc

    1.循环语句的分类和定义For循环、while循环和do-while循环特点:在一个程序中可以通过变换语句来使用不同的循环语句,而不改变程序的功能。 2.循环语句的引用例如:要从1累加到100使用For循环:for(sum,=0,i=1;i...

    恰当使用草稿纸.doc

    在学习中,一些学生可能会因为不习惯使用草稿纸,或者草稿纸使用方式不当,导致计算错误频出。例如,有的学生在随手可及的纸片上匆匆记录,导致书写混乱;有的学生则在计算过程中不断涂改,使草稿纸变得难以辨认。...

    Vray渲染速度慢的原因全解析.pdf

    然而,在追求高品质渲染效果的过程中,常常会遇到渲染速度慢的问题。本文将深入探讨Vray渲染速度慢的原因,并提供针对性的优化建议。 一、模型因素 Vray渲染速度慢的一个重要原因往往与模型的复杂度密切相关。在三...

    Java循环跳转语句之break共3页.pdf.zip

    使用`break`语句需要注意的是,它会使程序的流程突然中断,可能导致预期外的结果。因此,合理地使用`break`可以提高代码的效率,但过度依赖它可能使代码变得难以理解和维护。在大多数情况下,优先考虑优化循环逻辑,...

    javascript循环弹出窗口

    在实际应用中,开发者需要考虑用户体验,避免过度使用或不恰当使用弹窗,因为它们可能打断用户的浏览体验,甚至被视为骚扰。在设计这类功能时,应确保有明确的控制机制,让用户能够轻松关闭或调整行为。

    Objective-C-2.0程序设计-第5章-循环结构(1).ppt

    在处理大型数据集或者计算复杂问题时,理解并恰当使用循环结构至关重要,因为它直接影响到程序的效率和准确性。 最后,良好的编程实践包括使用`@autoreleasepool`来管理内存,特别是在iOS和macOS开发中,这是...

    解决vue中的无限循环问题

    具体来说,无限循环问题可能是由于不当的响应式数据处理方式或是在Vue的生命周期钩子中不恰当的数据更新触发的。 ### 知识点一:无限循环产生的原因 无限循环通常是由于在Vue组件中,数据的更新触发了视图的重新...

    导致WiFi连接速度变慢的原因.docx

    例如,不恰当的频道选择、信道重叠或功率设置过高/过低都可能引起网络拥堵和速度减慢。 3. **空间干扰和多用户访问**:当多个设备共享同一无线信道时,信道的带宽会被分割,导致每个设备的传输速度降低。此外,物理...

    光猫QQ局域网传输文件慢

    然而,在使用过程中,可能会遇到一些性能上的问题,比如在局域网内通过QQ传输文件时速度过慢,这个问题可能会影响日常的工作效率和用户体验。下面我们将详细探讨这个问题的原因以及解决方案。 首先,当QQ局域网传...

    循环箭头PPT素材下载.rar

    总之,循环箭头PPT素材是设计专业且引人入胜的演示文稿不可或缺的一部分。通过恰当的运用,它们可以帮助传达复杂概念,提升观众对内容的理解,使你的演示更具影响力。因此,对于任何需要展示循环流程的场合,拥有...

    Java中while循环中break和contiune语句区别.pdf

    需要注意的是,`break`和`continue`都不能用在循环语句之外的任何其他语句中,它们只能在循环体内使用,包括`for`、`while`和`do-while`循环。此外,`break`和`continue`也可以在`switch`语句中使用,但这是另一个...

Global site tag (gtag.js) - Google Analytics