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插件制作 手风琴Panel效果实现
Aug 17 Javascript
jquery 倒计时效果实现秒杀思路
Sep 11 Javascript
jquery中ajax函数执行顺序问题之如何设置同步
Feb 28 Javascript
js调用后台、后台调用前台等方法总结
Apr 17 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
Dec 29 Javascript
不定义JQuery插件 不要说会JQuery
Mar 07 Javascript
jQuery插件formValidator实现表单验证
May 23 Javascript
jQuery窗口拖动功能的实现代码
Feb 04 Javascript
vue利用axios来完成数据的交互
Mar 23 Javascript
通过JS运行机制的角度说说作用域
Mar 12 Javascript
node.js中process进程的概念和child_process子进程模块的使用方法示例
Feb 11 Javascript
js+html+css实现手动轮播和自动轮播
Dec 30 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
「OVERLORD」动画重要删减!雅儿贝德的背叛?至尊猎杀队结成
2020/04/09 日漫
php中的一些数组排序方法分享
2012/07/20 PHP
PHP遍历数组的三种方法及效率对比分析
2015/02/12 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
2017/01/30 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
2019/08/13 PHP
Javascript 个人笔记(没有整理,很乱)
2007/07/07 Javascript
JavaScript自执行闭包的小例子
2013/06/29 Javascript
从零学jquery之如何使用回调函数
2014/05/16 Javascript
js实现图片在未加载完成前显示加载中字样
2014/09/03 Javascript
非jQuery实现照片散落桌子上,单击放大的LightBox效果
2014/11/28 Javascript
ajax读取数据后使用jqchart显示图表的方法
2015/06/10 Javascript
基于jQuery实现美观且实用的倒计时实例代码
2015/12/30 Javascript
Vue头像处理方案小结
2018/07/26 Javascript
Vue-component全局注册实例
2018/09/06 Javascript
微信小程序canvas截取任意形状的实现代码
2020/01/13 Javascript
[01:09:19]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第二场 2月28日
2021/03/11 DOTA
Python和php通信乱码问题解决方法
2014/04/15 Python
Python的Flask框架中Flask-Admin库的简单入门指引
2015/04/07 Python
Python输出PowerPoint(ppt)文件中全部文字信息的方法
2015/04/28 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
2017/08/31 Python
python远程连接服务器MySQL数据库
2018/07/02 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
2020/03/07 Python
Python Switch Case三种实现方法代码实例
2020/06/18 Python
详解CSS3选择器:nth-child和:nth-of-type之间的差异
2017/09/18 HTML / CSS
Html5新特性用canvas标签画多条直线附效果截图
2014/06/30 HTML / CSS
Kipling凯浦林美国官网:世界著名时尚休闲包袋品牌
2016/08/24 全球购物
Maison Lab荷兰:名牌Outlet购物
2018/08/10 全球购物
运动鞋、足球鞋和慕尼黑球衣:Sport Münzinger
2019/08/26 全球购物
董事长助理岗位职责
2014/02/18 职场文书
年度安全生产目标责任书
2014/07/23 职场文书
会计试用期自我评价
2014/09/19 职场文书
2014年物流工作总结
2014/11/25 职场文书
对学校的意见和建议
2015/06/04 职场文书
pandas时间序列之pd.to_datetime()的实现
2022/06/16 Python