for 循环性能比较 提高for循环的效率


Posted in Javascript onMarch 19, 2009

for(int i=1,n=tempUser.length;i <n;i++)与
for(int i=1,;i <tempUser.length;i++)相比较,性能有较大的区别吗,有必要采取这种写法吗,
习惯for(int i=1,;i <tempUser.length;i++),而且并没有发现两者的性能有较大差别,
我当即就测试了一下,发现果然性能比较起来差别很小,甚至后者更高效一点。
虽然得出这样的结果,但和自己心里想的确完全相反的。所有当然就回复说差不多。
今天又发现一位前辈的blog中正好有对这个帖子的回应。他做了测试,内容大致是前面的帖子的问题应该是差不多的,但是他又更深入的进行测试,得出:在有情况for(int i=0;i<a.b.c.length;i++)的情况的时候,使用for(int i=0,n=a.b.c.length;i<n;i++)更加高效。
所有我也做了一下测试:

class Program { 
static void Main(string[] args) { 
string s; 
s = Console.ReadLine(); while(s != "0") { 
Person p = new Person(10000000); 
Console.WriteLine("for(int i=0;i<lenArray.length;i++)"); 
Console.WriteLine("Starting..."); 
long l1 = DateTime.Now.Ticks; 
for(int i = 0; i < p.Child.Alias.Length; i++) { 
//Console.Write(lenArray[i]); 
} 
long l2 = DateTime.Now.Ticks; 
Console.WriteLine("Ending.\nTime is : " + (l2 - l1).ToString()); 
Console.WriteLine("for(int i=0,n=lenArray.length;i<n;i++)"); 
Console.WriteLine("Starting..."); 
long l3 = DateTime.Now.Ticks; 
for(int i = 0, n = p.Child.Alias.Length; i < n; i++) { 
//Console.Write(lenArray[i]); 
} 
long l4 = DateTime.Now.Ticks; 
Console.WriteLine("Ending.\nTime is : " + (l4 - l3).ToString()); 
s = Console.ReadLine(); 
} 
Console.Read(); 
} 
}

for 循环性能比较 提高for循环的效率

其中数据量越大,类越大,差别越明显。

结论:影响应该在,变量在每次循环都要访问下一级变量的原因。如果只是简单的a.length可能编译器对这样的循环操作有优化,将a.length保存到了内存或一个比内存更块的地方,而多级就没有这么幸运了。
我们都知道for(int i=0;i<a.length;i++)语句,i=0是运行一次,而i<a.length和i++是每次循环都要做的工作。所有应该尽量将访问变量耗时间的操作放在第一个;号前。

Javascript 相关文章推荐
Javascript将string类型转换int类型
Dec 09 Javascript
推荐一个自己用的封装好的javascript插件
Jan 29 Javascript
jquery中animate的stop()方法作用实例分析
Jan 30 Javascript
js 获取元素在页面上的偏移量的方法汇总
Apr 13 Javascript
基于JavaScript FileReader上传图片显示本地链接
May 27 Javascript
AngularJS实现的省市二级联动功能示例【可对选项实现增删】
Oct 26 Javascript
Vue自定义toast组件的实例代码
Aug 15 Javascript
微信小程序开发之路由切换页面重定向问题
Sep 18 Javascript
解决webpack+Vue引入iView找不到字体文件的问题
Sep 28 Javascript
JS实现根据详细地址获取经纬度功能示例
Apr 16 Javascript
如何实现小程序tab栏下划线动画效果
May 18 Javascript
jquery+php后台实现省市区联动功能示例
May 23 jQuery
js no-repeat写法 背景不重复
Mar 18 #Javascript
javascript 避免闭包引发的问题
Mar 17 #Javascript
用JavaScript编写COM组件的步骤
Mar 17 #Javascript
IE6与IE7中,innerHTML获取param的区别
Mar 15 #Javascript
InnerHtml和InnerText的区别分析
Mar 13 #Javascript
JavaScript 快捷键设置实现代码
Mar 13 #Javascript
JavaScript 事件属性绑定带参数的函数
Mar 13 #Javascript
You might like
ThinkPHP的Widget扩展实例
2014/06/19 PHP
JavaScript中的16进制字符(改进)
2011/11/21 Javascript
JS自动缩小超出大小的图片
2012/10/12 Javascript
JS 实现图片直接下载示例代码
2013/07/22 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
2013/12/04 Javascript
Node.js中的流(Stream)介绍
2015/03/30 Javascript
jquery.form.js实现将form提交转为ajax方式提交的方法
2015/04/07 Javascript
JavaScript中的anchor()方法使用详解
2015/06/08 Javascript
jQuery Ajax和getJSON获取后台普通json数据和层级json数据用法分析
2016/06/08 Javascript
jQuery简单动画变换效果实例分析
2016/07/04 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
2016/12/15 Javascript
Vue服务器渲染Nuxt学习笔记
2018/01/31 Javascript
Vue源码探究之状态初始化
2018/11/14 Javascript
WebGL学习教程之Three.js学习笔记(第一篇)
2019/04/25 Javascript
微信小程序位置授权处理方法
2019/06/13 Javascript
vue自定义指令限制输入框输入值的步骤与完整代码
2020/08/30 Javascript
[06:38]DOTA2怒掀电竞风暴 2013Chinajoy
2013/07/27 DOTA
[01:06] DOTA2英雄背景故事第三期之秩序法则光之守卫
2020/07/07 DOTA
python下载图片实现方法(超简单)
2017/07/21 Python
使用 Python 实现微信群友统计器的思路详解
2018/09/26 Python
解决pandas .to_excel不覆盖已有sheet的问题
2018/12/10 Python
python数据类型可变不可变知识点总结
2020/03/06 Python
canvas小画板之平滑曲线的实现
2020/08/12 HTML / CSS
戴尔美国官网:Dell
2016/08/31 全球购物
超30万乐谱下载:Musicnotes.com
2016/09/24 全球购物
美国床垫和床上用品公司:Nest Bedding
2017/06/12 全球购物
德国足球商店:OUTFITTER
2019/05/06 全球购物
面向对象编程的优势是什么
2015/12/17 面试题
什么时候用assert
2015/05/08 面试题
会计电算一体化个人简历的自我评价
2013/10/15 职场文书
音乐专业应届生教师求职信
2013/11/04 职场文书
优秀团员个人事迹材料
2014/01/29 职场文书
优秀学生获奖感言
2014/02/15 职场文书
产品质量保证书
2014/04/29 职场文书
小学生五一劳动节演讲稿
2015/03/18 职场文书
python 离散点图画法的实现
2022/04/01 Python