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 04 Javascript
js实现权限树的更新权限时的全选全消功能
Feb 17 Javascript
有效的捕获JavaScript焦点的方法小结
Oct 08 Javascript
利用jQuery接受和处理xml数据的代码(.net)
Mar 28 Javascript
Jquery 例外被抛出且未被接住原因介绍
Sep 04 Javascript
JS实现两个大数(整数)相乘
Apr 28 Javascript
JS冒泡事件与事件捕获实例详解
Nov 25 Javascript
Vue.js常用指令的使用小结
Jun 23 Javascript
JS实现显示当前日期的实例代码
Jul 03 Javascript
微信小程序项目实践之验证码倒计时功能
Jul 18 Javascript
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
Feb 03 Javascript
三种方式清除vue路由跳转router-link的历史记录
Apr 10 Vue.js
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
追求程序速度,而不是编程的速度
2008/04/23 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
2017/02/28 PHP
XHTML-Strict 内允许出现的标签
2006/12/11 Javascript
仿猪八戒网左下角的文字滚动效果
2011/10/28 Javascript
AJAX跨域请求json数据的实现方法
2013/11/11 Javascript
js淡入淡出焦点图幻灯片效果代码分享
2015/09/08 Javascript
详解javascript数组去重问题
2015/11/06 Javascript
Node.js刷新session过期时间的实现方法推荐
2016/05/18 Javascript
总结javascript中的六种迭代器
2016/08/16 Javascript
Bootstrap模态框调用功能实现方法
2016/09/19 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
2016/10/11 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
详解有关easyUI的拖动操作中droppable,draggable用法例子
2017/06/03 Javascript
js获取html页面代码中图片地址的实现代码
2018/03/05 Javascript
JS实现监控微信小程序的原理
2018/06/15 Javascript
基于rollup的组件库打包体积优化小结
2018/06/18 Javascript
vue项目打包部署到服务器的方法示例
2018/08/27 Javascript
vue中使用protobuf的过程记录
2018/10/26 Javascript
Vue2.0实现组件之间数据交互和通信操作示例
2019/05/16 Javascript
微信小程序 扭蛋抽奖机css3动画实现详解
2019/07/19 Javascript
CKEditor扩展插件:自动排版功能autoformat插件实现方法详解
2020/02/06 Javascript
python中关于for循环的碎碎念
2017/06/30 Python
对python中执行DOS命令的3种方法总结
2018/05/12 Python
linux安装Python3.4.2的操作方法
2018/09/28 Python
Django的models中on_delete参数详解
2019/07/16 Python
python3字符串操作总结
2019/07/24 Python
python中下标和切片的使用方法解析
2019/08/27 Python
eBay爱尔兰站:eBay.ie
2019/08/09 全球购物
Java程序员面试题
2016/09/27 面试题
小学教师自我剖析材料
2014/09/29 职场文书
大学生暑期社会实践证明范本
2014/10/24 职场文书
国际贸易实务实训报告
2014/11/05 职场文书
社区好人好事材料
2014/12/26 职场文书
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
2021/05/17 Python
Python内置包对JSON文件数据进行编码和解码
2022/04/12 Python
Elasticsearch6.2服务器升配后的bug(避坑指南)
2022/09/23 Servers