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中xml操作实现代码
Nov 21 Javascript
常用DOM整理
Jun 16 Javascript
jQuery动态背景图片效果实现方法
Jul 03 Javascript
JavaScript中利用各种循环进行遍历的方式总结
Nov 10 Javascript
JavaScript测试工具之Karma-Jasmine的安装和使用详解
Dec 03 Javascript
JavaScript“尽快失败”的原则实例详解
Oct 08 Javascript
原生js实现无限循环轮播图效果
Jan 20 Javascript
微信小程序url与token设置详解
Sep 26 Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
Nov 27 Javascript
vue+element实现表单校验功能
May 20 Javascript
如何实现双向绑定mvvm的原理实现
May 28 Javascript
H5+css3+js搭建带验证码的登录页面
Oct 11 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文件缓存类示例分享
2015/01/30 PHP
php查询操作实现投票功能
2016/05/09 PHP
MAC下通过改apache配置文件切换php多版本的方法
2017/04/26 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
PHP输出Excel PHPExcel的方法
2018/07/26 PHP
JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结
2010/06/18 Javascript
Javascript的并行运算实现代码
2010/11/19 Javascript
jquery下为Event handler传递动态参数的代码
2011/01/06 Javascript
JQuery循环滚动图片代码
2011/12/08 Javascript
js打开windows上的可执行文件示例
2014/05/27 Javascript
jQuery实现长按按钮触发事件的方法
2015/02/02 Javascript
JQuery移动页面开发之屏幕方向改变与滚屏的实现
2015/12/03 Javascript
javascript正则表达式中分组详解
2016/07/17 Javascript
jQuery 获取遍历获取table中每一个tr中的第一个td的方法
2016/10/05 Javascript
浅谈Node.js 沙箱环境
2018/05/15 Javascript
React传值 组件传值 之间的关系详解
2019/08/26 Javascript
继承行为在 ES5 与 ES6 中的区别详解
2019/12/24 Javascript
Mac中Python 3环境下安装scrapy的方法教程
2017/10/26 Python
python搭建服务器实现两个Android客户端间收发消息
2018/04/12 Python
kaggle+mnist实现手写字体识别
2018/07/26 Python
Python中的 is 和 == 以及字符串驻留机制详解
2019/06/28 Python
详解Python利用random生成一个列表内的随机数
2019/08/21 Python
Numpy的简单用法小结
2019/08/28 Python
使用python写一个自动浏览文章的脚本实例
2019/12/05 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
2020/02/28 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
2020/09/09 Python
KIKO MILANO英国官网:意大利知名化妆品和护肤品品牌
2017/09/25 全球购物
教师求职推荐信范文
2013/11/20 职场文书
国家励志奖学金获奖感言
2014/01/09 职场文书
岗位竞聘演讲稿
2014/01/10 职场文书
最常使用的求职信
2014/05/25 职场文书
弘扬焦裕禄精神走群众路线思想汇报
2014/09/12 职场文书
处级干部考察材料
2014/12/24 职场文书
校园环境卫生倡议书
2015/04/29 职场文书
红色经典电影观后感
2015/06/18 职场文书
MySQL实现配置主从复制项目实践
2022/03/31 MySQL