版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、jQuery的Each比JS原生for循环性能慢许多的缘由_ 这篇文章主要介绍了jQuery的Each比JS原生for循环性能慢许多的缘由的相关资料,需要的伴侣可以参考下 其实查看jQuery的源代码,发觉each的代码很简洁,但为什么性能和原生的for循环相差几十倍呢? jQuery的each的核心代码 for (; i length; i+) value = callback.call(obji, i, obji); if (value = false) break; 看着很简洁,但为什么会慢许多呢? 编写测试代码如下: var length=300000; function GetArr
2、() var t = ; for (var i = 0; i length; i+) ti = i; return t; function each1(obj, callback) var i = 0; var length = obj.length for (; i length; i+) value = callback(i, obji); /* if ( value = false ) 去掉了推断 break; */ function each2(obj, callback) var i = 0; var length = obj.length for (; i length; i+)
3、value = callback(i, obji);/*去掉了call*/ if (value = false) break; function each3(obj, callback) var i = 0; var length = obj.length for (; i length; i+) value = callback.call(obji, i, obji);/*自己写的call*/ if (value = false) break; function Test1() var t = GetArr(); var date1 = new Date().getTime(); var l
4、engtharr = t.length; var total = 0; each1(t, function (i, n) total += n; ); var date12 = new Date().getTime(); console.log(1Test + (date12 - date1); function Test2() var t = GetArr(); var date1 = new Date().getTime(); var total = 0; each2(t, function (i, n) total += n; ); var date12 = new Date().get
5、Time(); console.log(2Test + (date12 - date1); function Test3() var t = GetArr(); var date1 = new Date().getTime(); var total = 0; each3(t, function (i, n) total += n; ); var date12 = new Date().getTime(); console.log(3Test + (date12 - date1); function Test4() var t = GetArr(); var date1 = new Date()
6、.getTime(); var total = 0; $.each(t, function (i, n) total += n; ); var date12 = new Date().getTime(); console.log(4Test + (date12 - date1); 运行测试,发觉,第一个和其次个相差不是很大,这说明由于break这个推断导致的性能差异很少,但其次个和第三个,第四个偏差就就不止一倍了,而其次个和第三个唯一的区分就是调用了call,看来call会导致性能损失,由于call会切换上下文,当然jQuery的each慢还有其他缘由,它还在循环中调用了其他的方法,call只
7、是一个缘由罢了。 因此可以说call,和apply都是js中比较消耗性能的方法,在性能要求严格时,建议少用。 下面在通过一段代码看下jquery的each和js原生for循环性能对比 html xmlns=l head runat=server titlefor与each性能比较/title script src=./Cks/jquery-1.7.1.min.js type=text/javascript/script script type=text/javascript language=javascript function getSelectLength() var time1 = n
8、ew Date().getTime(); var len = $(#select_test).find(option).length; var selectObj = $(#select_test); for (var i = 0; i len; i+) if (selectObj.get(0).optionsi.text = 111111) selectObj.get(0).optionsi.selected = true; break; var time2 = new Date().getTime(); alert(for循环执行时间: + (time2 - time1); time1 =
9、 new Date().getTime(); $(#select_test).find(option).each(function () if ($(this).text() = 111111) $(this)0.selected = true; ); time2 = new Date().getTime(); alert(each循环执行时间: + (time2 - time1); /script /head body form id=form1 runat=server divselect id=select_test option value=1111111/option option
10、value=2222222/option option value=3333333/option option value=4444444/option option value=55/option option value=66/option option value=77/option option value=88/option option value=99/option option value=1010/option option value=1111/option option value=1212/option option value=1313/option option value=1414/option option value=1515/option option value=1616/option option value=1717/option option value=1818/option option value=1919/option option value=2020/option /selectinput type=but
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 助听器产业链招商引资的调研报告
- 衬衫袖扣项目运营指导方案
- 区块链与人工智能融合行业市场调研分析报告
- 宠物用牙刷产品供应链分析
- 喷雾美黑服务行业市场调研分析报告
- 多处理器芯片产业链招商引资的调研报告
- 电耦合器项目营销计划书
- 电子香烟电池充电器市场发展前景分析及供需格局研究预测报告
- 羊毛剪市场发展前景分析及供需格局研究预测报告
- 乳罩产品供应链分析
- 2023-2024学年河北省唐山市十县高二年级上册期中考试数学模拟试题(含答案)
- 绿色建筑材料的研发与应用
- 门安装施工工艺
- 留学行业财务分析
- 《五四运动》【优质课件】
- 列名单铺垫和邀约课件
- 怎样让桃树高产桃树高产栽培技术
- 商业秘密保护意识宣传培训
- 电路板设备维护技能培训
- 政务信息资源共享交换平台共享网站测试计划书报告
- 2023版中国结直肠癌肝转移诊断和综合治疗指南解读
评论
0/150
提交评论