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 相关文章推荐
jQuery实现动画效果的实例代码
May 07 Javascript
为什么JS中eval处理JSON数据要加括号
Apr 13 Javascript
JQuery给网页更换皮肤的方法
May 30 Javascript
JQuery给select添加/删除节点的实现代码
Apr 26 Javascript
AngularJS控制器之间的数据共享及通信详解
Aug 01 Javascript
老生常谈JavaScript中的this关键字
Oct 01 Javascript
浅谈jQuery添加的HTML,JS失效的问题
Oct 05 Javascript
yarn与npm的命令行小结
Oct 20 Javascript
AngularJS用户选择器指令实例分析
Nov 04 Javascript
bootstrap3-dialog-master模态框使用详解
Aug 22 Javascript
JavaScript实现的文本框placeholder提示文字功能示例
Jul 25 Javascript
jQuery弹框插件使用方法详解
May 26 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
PHP MVC模式在网站架构中的实现分析
2010/03/04 PHP
PHP中的session永不过期的解决思路及实现方法分享
2011/04/20 PHP
PHP中常用的数组操作方法笔记整理
2016/05/16 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
JavaScript 脚本将当地时间转换成其它时区
2009/03/19 Javascript
JavaScript 事件对象的实现
2009/07/13 Javascript
JS getStyle获取最终样式函数代码
2010/04/01 Javascript
aspx中利用js实现确认删除代码
2010/07/22 Javascript
jquery中map函数与each函数的区别实例介绍
2014/06/23 Javascript
详解JavaScript的回调函数
2015/11/20 Javascript
使用jquery提交form表单并自定义action的方法
2016/05/25 Javascript
微信小程序 PHP生成带参数二维码
2017/02/21 Javascript
jQuery插件FusionCharts绘制ScrollColumn2D图效果示例【附demo源码下载】
2017/03/22 jQuery
node.js express中app.param的用法详解
2017/07/16 Javascript
快速理解 JavaScript 中的 LHS 和 RHS 查询的用法
2017/08/24 Javascript
JS实现前端缓存的方法
2017/09/21 Javascript
浅谈vue项目优化之页面的按需加载(vue+webpack)
2017/12/11 Javascript
Angular实现的内置过滤器orderBy排序与模糊查询功能示例
2017/12/29 Javascript
vue axios 简单封装以及思考
2018/10/09 Javascript
vue 进阶之实现父子组件间的传值
2019/04/26 Javascript
Python获取当前时间的方法
2014/01/14 Python
python轻松实现代码编码格式转换
2015/03/26 Python
在Python中利用Pandas库处理大数据的简单介绍
2015/04/07 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
2018/10/26 Python
在Python中分别打印列表中的每一个元素方法
2018/11/07 Python
树莓派4B+opencv4+python 打开摄像头的实现方法
2019/10/18 Python
python 实现return返回多个值
2019/11/19 Python
基于tensorflow for循环 while循环案例
2020/06/30 Python
戴森比利时官方网站:Dyson BE
2020/10/03 全球购物
2014年大学生预备党员思想汇报1000字
2014/09/13 职场文书
2014年纪检监察工作总结
2014/11/11 职场文书
办公室岗位职责
2015/02/04 职场文书
欠款证明
2015/06/24 职场文书
2015年国庆晚会主持词
2015/07/01 职场文书
写作技巧:如何撰写一份优秀的营销策划书
2019/08/13 职场文书
创业计划书之面包店
2019/09/17 职场文书