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 相关文章推荐
父窗口获取弹出子窗口文本框的值
Jun 27 Javascript
jQuery实现的Email中的收件人效果(按del键删除)
Mar 20 Javascript
JavaScript学习笔记(一) js基本语法
Oct 25 Javascript
Javascript脚本实现静态网页加密实例代码
Nov 05 Javascript
JavaScript中用sort()方法对数组元素进行排序的操作
Jun 09 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
Aug 03 Javascript
JavaScript 栈的详解及实例代码
Jan 22 Javascript
react.js CMS 删除功能的实现方法
Apr 17 Javascript
vuejs手把手教你写一个完整的购物车实例代码
Jul 06 Javascript
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
Jun 28 Javascript
layui框架与SSM前后台交互的方法
Sep 12 Javascript
vue+axios 拦截器实现统一token的案例
Sep 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
?繁体转换的class
2006/10/09 PHP
PHP二维数组的去重问题解析
2011/07/17 PHP
thinkphp实现分页显示功能
2016/12/03 PHP
php结合redis高并发下发帖、发微博的实现方法
2016/12/15 PHP
Thinkphp结合ajaxFileUpload实现异步图片传输示例
2017/03/13 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
flexigrid 类似ext grid的JS表格代码
2010/07/17 Javascript
jquery1.9 下检测浏览器类型和版本的方法
2013/12/26 Javascript
Bootstrap每天必学之表格
2015/11/23 Javascript
JS判断元素是否在数组内的实现代码
2016/03/30 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
2017/07/27 Javascript
微信小程序picker组件简单用法示例【附demo源码下载】
2017/12/05 Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
2018/02/05 Javascript
详解微信小程序与内嵌网页交互实现支付功能
2018/10/22 Javascript
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
2020/03/10 Javascript
Node.js API详解之 assert模块用法实例分析
2020/05/26 Javascript
浅谈Python数据类型判断及列表脚本操作
2016/11/04 Python
在mac下查找python包存放路径site-packages的实现方法
2018/11/06 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
python学习--使用QQ邮箱发送邮件代码实例
2019/04/16 Python
Python.append()与Python.expand()用法详解
2019/12/18 Python
使用python实现多维数据降维操作
2020/02/24 Python
python属于跨平台语言码
2020/06/09 Python
Python使用tkinter实现摇骰子小游戏功能的代码
2020/07/02 Python
Pyinstaller打包Scrapy项目的实现步骤
2020/09/22 Python
Python项目实战之使用Django框架实现支付宝付款功能
2021/02/23 Python
Petmate品牌官方网站:宠物用品
2018/11/25 全球购物
给老婆的婚前保证书
2014/02/01 职场文书
代理协议书范本
2014/04/22 职场文书
社会工作专业求职信
2014/07/15 职场文书
美术学专业求职信
2014/07/23 职场文书
党的群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
党的群众路线批评与自我批评范文
2014/10/16 职场文书
中学团支部工作总结
2015/08/13 职场文书
关于nginx 实现jira反向代理的问题
2021/09/25 Servers
JavaScript中10个Reduce常用场景技巧
2022/06/21 Javascript