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 相关文章推荐
js 图片等比例缩放代码
May 13 Javascript
在IE6下发生Internet Explorer cannot open the Internet site错误
Jun 21 Javascript
firefox火狐浏览器与与ie兼容的2个问题总结
Jul 20 Javascript
javascript处理table表格的代码
Dec 06 Javascript
从零开始学习jQuery (十) jQueryUI常用功能实战
Feb 23 Javascript
IE的有条件注释判定IE版本详解(附实例代码)
Jan 04 Javascript
JQueryEasyUI Layout布局框架的使用
Apr 08 Javascript
js改变css样式的三种方法推荐
Jun 28 Javascript
详解vue添加删除元素的方法
Jun 30 Javascript
webpack4 从零学习常用配置(小结)
May 28 Javascript
原生js实现点击按钮复制内容到剪切板
Nov 19 Javascript
Promise静态四兄弟实现示例详解
Jul 07 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
咖啡是不是喝了会上瘾?咖啡是必须品吗!
2021/03/04 新手入门
一些php技巧与注意事项分析
2011/02/03 PHP
基于curl数据采集之单页面采集函数get_html的使用
2013/04/28 PHP
Zend Framework页面缓存实例
2014/06/25 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
2014/08/22 PHP
php实现数组纵向转横向并过滤重复值的方法分析
2017/05/29 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
2018/04/20 PHP
PHP sdk文档处理常用代码示例解析
2020/12/09 PHP
jQuery(1.6.3) 中css方法对浮动的实现缺陷分析
2011/09/09 Javascript
为JS扩展Array.prototype.indexOf引发的问题探讨及解决
2013/04/24 Javascript
js中的前绑定和后绑定详解
2013/08/01 Javascript
用JS在浏览器中创建下载文件
2014/03/05 Javascript
javascript中函数作为参数调用的方法
2015/02/09 Javascript
jQuery+slidereveal实现的面板滑动侧边展出效果
2015/03/14 Javascript
jquery判断密码强度的验证代码
2020/04/22 Javascript
对Js OOP编程 创建对象的一些全面理解
2016/07/26 Javascript
JS 拼凑字符串的简单实例
2016/09/02 Javascript
ionic2中使用自动生成器的方法
2018/03/04 Javascript
async/await地狱该如何避免详解
2018/05/10 Javascript
Python的MongoDB模块PyMongo操作方法集锦
2016/01/05 Python
从源码解析Python的Flask框架中request对象的用法
2016/06/02 Python
Python解惑之整数比较详解
2017/04/24 Python
Python父目录、子目录的相互调用方法
2019/02/16 Python
python 如何将数据写入本地txt文本文件的实现方法
2019/09/11 Python
python实现将中文日期转换为数字日期
2020/07/14 Python
html5移动端价格输入键盘的实现
2019/09/16 HTML / CSS
I.T集团香港官方商城:ITeSHOP.com Hong Kong
2019/02/15 全球购物
Coccinelle官网:意大利的著名皮具品牌
2019/05/15 全球购物
小学生九一八纪念日83周年演讲稿500字
2014/09/17 职场文书
业绩倒数第一的检讨书
2014/09/24 职场文书
2014年行政执法工作总结
2014/12/11 职场文书
公司中层管理培训心得体会
2016/01/11 职场文书
交通安全学习心得体会
2016/01/18 职场文书
创业计划书之面包店
2019/09/17 职场文书
五年级作文之学校的四季
2019/12/05 职场文书
聊聊JS ES6中的解构
2021/04/29 Javascript