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 相关文章推荐
繁简字转换功能
Jul 19 Javascript
JavaScript 使用技巧精萃(.net html
Apr 25 Javascript
一段批量给页面上的控件赋值js
Jun 19 Javascript
实现51Map地图接口(示例代码)
Nov 22 Javascript
jQuery实现数秒后自动提交form的方法
Mar 05 Javascript
jQuery表单美化插件jqTransform使用详解
Apr 12 Javascript
分享我对JS插件开发的一些感想和心得
Feb 04 Javascript
详解angular2封装material2对话框组件
Mar 03 Javascript
JavaScript 用fetch 实现异步下载文件功能
Jul 21 Javascript
使用node打造自己的命令行工具方法教程
Mar 26 Javascript
微信小程序实现留言板功能
Nov 02 Javascript
vue实现图片按比例缩放问题操作
Aug 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
AJAX for PHP简单表数据查询实例
2007/01/02 PHP
PHP MYSQL乱码问题,使用SET NAMES utf8校正
2009/11/30 PHP
php zip文件解压类代码
2009/12/02 PHP
php网站来路获取代码(针对搜索引擎)
2010/06/08 PHP
linux实现php定时执行cron任务详解
2013/12/24 PHP
php中hashtable实现示例分享
2014/02/13 PHP
PHP使用Face++接口开发微信公众平台人脸识别系统的方法
2015/04/17 PHP
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
2016/03/21 PHP
jquery BS,dialog控件自适应大小
2009/07/06 Javascript
location.href用法总结(最主要的)
2013/12/27 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
2015/04/21 Javascript
canvas绘制表盘时钟
2017/01/23 Javascript
js获取浏览器和屏幕的各种宽度高度
2017/02/22 Javascript
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
python和shell实现的校验IP地址合法性脚本分享
2014/10/23 Python
简单理解Python中基于生成器的状态机
2015/04/13 Python
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
利用Python为iOS10生成图标和截屏
2016/09/24 Python
python3连接MySQL数据库实例详解
2018/05/24 Python
Python调用graphviz绘制结构化图形网络示例
2019/11/22 Python
python给图像加上mask,并提取mask区域实例
2020/01/19 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
2020/08/04 Python
Opencv+Python识别PCB板图片的步骤
2021/01/07 Python
CSS3绘制有活力的链接下划线
2016/07/14 HTML / CSS
html5本地存储 localStorage操作使用详解
2016/09/20 HTML / CSS
怎么可以提高数据库查询数据的速度
2014/06/28 面试题
大学生期末自我鉴定
2014/02/01 职场文书
小学老师寄语大全
2014/04/04 职场文书
触电现场处置方案
2014/05/14 职场文书
学校节水倡议书
2015/04/29 职场文书
亮剑观后感
2015/06/05 职场文书
小学生法制教育心得体会
2016/01/14 职场文书
教师正风肃纪心得体会
2016/01/15 职场文书
2016年三八红旗手先进事迹材料
2016/02/26 职场文书
Python+uiautomator2实现自动刷抖音视频功能
2021/04/29 Python