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获取html页面节点方法(递归方式)
Dec 13 Javascript
JS中的数组的sort方法使用示例
Jan 22 Javascript
使用js操作css实现js改变背景图片示例
Mar 10 Javascript
JavaScript弹出新窗口后向父窗口输出内容的方法
Apr 06 Javascript
js实现基于正则表达式的轻量提示插件
Aug 29 Javascript
ES6的新特性概览
Mar 10 Javascript
js实现京东轮播图效果
Jun 30 Javascript
Vue中$refs的用法详解
Jun 24 Javascript
详解使用create-react-app添加css modules、sasss和antd
Jul 31 Javascript
对vue 键盘回车事件的实例讲解
Aug 25 Javascript
学习node.js 断言的使用详解
Mar 18 Javascript
mustache.js实现首页元件动态渲染的示例代码
Dec 28 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清除bom示例
2014/03/03 PHP
PHP跨平台获取服务器IP地址自定义函数分享
2014/12/29 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
用CSS+JS实现的进度条效果效果
2007/06/05 Javascript
JavaScript delete 属性的使用
2009/10/08 Javascript
利用JS解决ie6不支持max-width,max-height问题的方法
2014/01/02 Javascript
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
js实现每日自动换一张图片的方法
2015/05/04 Javascript
JavaScript计算器网页版实现代码分享
2016/07/15 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
2016/12/15 Javascript
Axios学习笔记之使用方法教程
2017/07/21 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
2017/12/20 jQuery
每周一练 之 数据结构与算法(Stack)
2019/04/16 Javascript
详解Vue调用手机相机和相册以及上传
2019/05/05 Javascript
一次微信小程序内地图的使用实战记录
2019/09/09 Javascript
javascript+css实现进度条效果
2020/03/25 Javascript
详解react组件通讯方式(多种)
2020/05/06 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
2020/09/04 Javascript
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
2021/01/22 Vue.js
python实现360皮肤按钮控件示例
2014/02/21 Python
Python删除指定目录下过期文件的2个脚本分享
2014/04/10 Python
Python网络爬虫项目:内容提取器的定义
2016/10/25 Python
Python引用类型和值类型的区别与使用解析
2017/10/17 Python
解决pycharm运行时interpreter为空的问题
2018/10/29 Python
Django框架模板的使用方法示例
2019/05/25 Python
Python-opencv 双线性插值实例
2020/01/17 Python
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
高三家长寄语
2014/04/03 职场文书
理发店策划方案
2014/06/05 职场文书
工会2014法制宣传日活动总结
2014/11/01 职场文书
家庭暴力离婚起诉书
2015/05/18 职场文书
初中政教处工作总结
2015/08/12 职场文书
争做文明公民倡议书
2019/06/24 职场文书
浅谈Redis的几个过期策略
2021/05/27 Redis
SQL注入篇学习之盲注/宽字节注入
2022/03/03 MySQL