




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 美术四分钟技能展示课件
- 电网配电运维工岗位职责
- 生产经营单位安全培训方案
- 安全生产工作 报告
- 装修安全生产管理制度范文
- 安全幼儿园心得体会
- 河南信阳火灾事故调查报告
- 棉纺织企业安全生产规程
- 环氧树脂产品培训课件
- 美丽乡村政策培训课件
- 2025年广东广州市黄埔区人民政府永和街道办事处招聘政府聘员7人高频重点提升(共500题)附带答案详解
- 健康体检中心质量控制标准
- DB32∕T 3723-2020 高标准农田建设项目工程概算编制规程
- 光伏电站培训课件
- 机动车检测站2023年评审准则版质量手册程序文件质量记录合集
- 店铺多股东合同范例
- 2024年江苏省南京市《保安员证》考试题库含答案(全面)
- 2025年酒店上半年工作总结范文
- 消防水鹤安装工程施工方案及主要技术措施
- 《高校教师师德修养》课件
- 精神科藏药安全警示教育
评论
0/150
提交评论