欢迎来到天天文库
浏览记录
ID:35281303
大小:19.74 KB
页数:9页
时间:2019-03-23
《成都达内web前端开发javascript代码性能优化方案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、www.cdtedu.com达内教育—中国IT培训领导品牌成都达内:WEB前端开发javaScript代码性能优化方案JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。Firefox拥有目前最快的JavaScript解析器SpiderMonkey,有各种各样的让JavaScript的速度更快的努力,其中一个是asm.js.Asm.js是JavaScript是由Emscripten产生的一个子集,它
2、为C/C++编绎成的JavaScript代码做了很多优化,编译型后的代码很难看,这就是为什么你不能自己写优化后的代码,但它运行非常快。我建议你阅读一下这篇文章。好了,我们的目标是写速度更快的JavaScript代码,这里有让你的代码跑得更快一些的小窍门,以及更好的内存效率。请注意,我不是严格讨论DOM和Web应用程序,它是关于JavaScript的,DOM只是一部分。眼见为实,我要添加为第一个添加jsperf测试用例,使用的是Firefox38和Chrome39测试。#1不要类型转换www.cdtedu.com达内教育—中国IT培训领导品牌JavaScrip
3、t是动态类型,但如果你想提高速度不要使用该功能。尽量保持变量的类型一致。这也适用于数组,尽管主要是由浏览器都进行了优化,但尽量不要混用不同类型的数组。这就是为何编译成JavaScript的C/C++代码使用静态类型的原因之一。{varx='2';vary=5;x=2;x+y;}测试用例另外:字符串与数字类型间相互转换比方说,你必须将字符串转换为数字,parseInt与parseFloat是最好的方法吗?让我们来看看。parseFloat("100")+"100"//整型parseInt("100",10)"100"
4、0www.cdtedu.com达内教育—中
5、国IT培训领导品牌"100">>0"100"<<0//仅适用于正数"100">>>0parseInt测试~parseFloat测试Firefox对位操作进行了优化,运行的代码比parseInt和+运算速度快约99%。而Chrome显然对位运算符没有偏爱,他们比parseInt函数还慢62%。parseFloat比+运算符在两种浏览器(Firefox28%,Chrome39%)上都要快。因此,如果你在写Node/Chrome或Firefox的应用程序?我认为,一般使用parseInt函数是正确的。#2不要重新构造对象重组对象不便宜,应该避免它:不要使用dele
6、te运算符删除操作比分配一个null属性慢很多。分配null在两个浏览器都快99%,但它不能修改对象的结构,但删除可以。www.cdtedu.com达内教育—中国IT培训领导品牌编辑:我认为这里有点误导,这并不意味着你不应该使用delete操作符,delete运算符有它自己的使用情况,它可以防止对象的内存泄漏。deletevsnull不要以后再添加属性尽量不要在以后再添加属性,最好从一开始就定义对象的架构。这在Firefox中快100%,在Chrome中快89%。动态属性VS预先定义结构#3字符串联连字符串联连是一个非常昂贵的操作,但是应该用什么方法呢?当然
7、不是Array.prototype.join。+=运算符似乎比+快很多,String.prototype.concat和Array.prototype.join在两种浏览器都更快。Array.prototype.join是最慢的,符合市场预期。字符串连接测试#4正确的使用正则表达式使用RegExp.prototype.exec是没有必要,不是吗? www.cdtedu.com达内教育—中国IT培训领导品牌然而,RegExp.prototype.test和String.prototype.search之间是有性能差异的,让我们来看看哪个方法更快:正则表达式的
8、方法RegExp.prototype.exec比String.prototype.match快了不少,但他们是不完全一样的东西,它们的区别超出了本文的范围,看这个问答。RegEx.prototype.test更快,可能是因为它不返回找到匹配的索引。String.prototype.search应仅用于找到所需的匹配的索引。然而,你不应该使用正则表达式来查找另一个字符串的位置,你可以使用String.prototype.indexOf方法。String.prototype.searchVSString.prototype.indexOf另一个有趣的基准是Str
9、ing.prototype.indexOfVSReg
此文档下载收益归作者所有