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 相关文章推荐
Valerio 发布了 Mootools
Sep 23 Javascript
firefox下对ajax的onreadystatechange的支持情况分析
Dec 14 Javascript
jquery使用jxl插件导出excel示例
Apr 14 Javascript
Node.js插件的正确编写方式
Aug 03 Javascript
JavaScript表格常用操作方法汇总
Apr 15 Javascript
JS函数的定义与调用方法推荐
May 12 Javascript
使用Bootstrap框架制作查询页面的界面实例代码
May 27 Javascript
两种简单的跨域方法(jsonp、php)
Jan 02 Javascript
vue中使用codemirror的实例详解
Nov 01 Javascript
微信小程序实现星星评价效果
Nov 02 Javascript
vue中子组件传递数据给父组件的讲解
Jan 27 Javascript
关于layui的动态图标不显示的解决方法
Sep 04 Javascript
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
php中过滤非法字符的具体实现
2013/10/29 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
2016/12/15 PHP
JQuery 无废话系列教程(一) jquery入门 [推荐]
2009/06/23 Javascript
JavaScript 提升运行速度之循环篇 译文
2009/08/15 Javascript
javascript 静态对象和构造函数的使用和公私问题
2010/03/02 Javascript
JS焦点图切换,上下翻转
2011/05/12 Javascript
鼠标滑上去后图片放大浮出效果的js代码
2011/05/28 Javascript
JavaScript Array Flatten 与递归使用介绍
2011/10/30 Javascript
javascript计时器事件使用详解
2014/01/07 Javascript
用原生JS获取CLASS对象(很简单实用)
2014/10/15 Javascript
js style动态设置table高度
2014/10/21 Javascript
jQuery中:input选择器用法实例
2015/01/03 Javascript
js动态生成form 并用ajax方式提交的实现方法
2016/09/09 Javascript
Javascript中return的使用与闭包详解
2017/01/11 Javascript
jQuery validate 验证radio实例
2017/03/01 Javascript
微信小程序下拉刷新界面的实现
2017/09/28 Javascript
Angularjs添加排序查询功能的实例代码
2017/10/24 Javascript
记React connect的几种写法(小结)
2018/09/18 Javascript
详解小程序中h5页面onShow实现及跨页面通信方案
2019/05/30 Javascript
[01:32]2016国际邀请赛中国区预选赛CDEC战队教练采访
2016/06/26 DOTA
使用Python的Twisted框架实现一个简单的服务器
2015/04/16 Python
python 创建一个空dataframe 然后添加行数据的实例
2018/06/07 Python
Flask框架各种常见装饰器示例
2018/07/17 Python
Python将主机名转换为IP地址的方法
2019/08/14 Python
python异常处理之try finally不报错的原因
2020/05/18 Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
2020/06/23 Python
Python学习工具jupyter notebook安装及用法解析
2020/10/23 Python
印度购买眼镜和太阳镜网站:Coolwinks
2018/09/26 全球购物
Interhome丹麦:在线预订度假屋和公寓
2019/07/18 全球购物
澳大利亚100%丝绸多彩度假装商店:TheSwankStore
2019/09/04 全球购物
大学毕业后的十年规划
2014/01/07 职场文书
探矿工程师自荐信
2014/01/24 职场文书
自荐信格式范文
2015/03/04 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书
mysql事务隔离级别详情
2021/10/24 MySQL
AudioContext 实现音频可视化(web技术分享)
2022/02/24 Javascript