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 相关文章推荐
一个页面元素appendchild追加到另一个页面元素的问题
Jan 27 Javascript
jQuery实现鼠标滑过Div层背景变颜色的方法
Feb 17 Javascript
实例详解AngularJS实现无限级联动菜单
Jan 15 Javascript
浅析Javascript匿名函数与自执行函数
Feb 06 Javascript
js改变style样式和css样式的简单实例
Jun 28 Javascript
js数组去重的hash方法
Dec 22 Javascript
JavaScript实现打地鼠小游戏
Apr 23 Javascript
深入理解AngularJs-scope的脏检查(一)
Jun 19 Javascript
基于JavaScript实现百度搜索框效果
Jun 28 Javascript
聊聊JS动画库 Velocity.js的使用
Mar 13 Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
Aug 21 Javascript
JS前端可视化canvas动画原理及其推导实现
Aug 05 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使用JSON和将json还原成数组
2015/02/12 PHP
CI(Codeigniter)的Setting增强配置类实例
2016/01/06 PHP
PHP的openssl加密扩展使用小结(推荐)
2016/07/18 PHP
如何实现JS函数的重载
2006/09/22 Javascript
彻底搞懂JS无缝滚动代码
2007/01/03 Javascript
js+CSS 图片等比缩小并垂直居中实现代码
2008/12/01 Javascript
JavaScript创建类/对象的几种方式概述及实例
2013/05/06 Javascript
Extjs NumberField后面加单位实现思路
2013/07/30 Javascript
js如何实现淡入淡出效果
2020/11/18 Javascript
Angular 根据 service 的状态更新 directive
2016/04/03 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
AngularJS创建一个上传照片的指令实例代码
2018/02/24 Javascript
React BootStrap用户体验框架快速上手
2018/03/06 Javascript
vue路由守卫+登录态管理实例分析
2019/05/21 Javascript
js判断非127开头的IP地址的实例代码
2020/01/05 Javascript
nodejs对mongodb数据库的增加修删该查实例代码
2020/01/05 NodeJs
javascript实现倒计时效果
2020/02/17 Javascript
深入webpack打包原理及loader和plugin的实现
2020/05/06 Javascript
vue移动端下拉刷新和上滑加载
2020/10/27 Javascript
js动态生成表格(节点操作)
2021/01/12 Javascript
python中的实例方法、静态方法、类方法、类变量和实例变量浅析
2014/04/26 Python
对python字典元素的添加与修改方法详解
2018/07/06 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
2019/08/20 Python
python 链接sqlserver 写接口实例
2020/03/11 Python
matplotlib之属性组合包(cycler)的使用
2021/02/24 Python
Clarks鞋澳大利亚官方网站:Clarks Australia
2019/12/25 全球购物
德国亚马逊官方网站:Amazon.de
2020/11/15 全球购物
手机业务员岗位职责
2013/12/13 职场文书
詹天佑教学反思
2014/04/30 职场文书
大学生社会实践活动总结
2014/07/03 职场文书
开业庆典活动策划方案
2014/09/21 职场文书
党委领导班子整改方案
2014/09/30 职场文书
2019个人工作态度自我评价
2019/04/24 职场文书
《童年》读后感(三篇)
2019/08/27 职场文书
MATLAB 如何求取离散点的曲率最大值
2021/04/16 Python
Vscode中SSH插件如何远程连接Linux
2022/05/02 Servers