也谈JavaScript代码性能优化

差不多两年前写了个选择器whiz,除在DOM查找方面做了许多优化工作之外,还在代码优化上做了很多工作,一直没有分享。抽空总结一下,基本上在jQuery、Mootools和YUI的源码里面都可以看到这些写法。有些是已经在网上分享很多遍了,众所周知的,也有一些可能写了多年的JavaScript的开发人员也不一定想得到的。如果有说得不正确的地方,还请大家指出。还有特别说明的是,其中某些写法不是很推荐,虽然代码简洁了,但是有可能造成阅读困难。

1.尽量使用源生方法(Native Method)

js是解释性语言,相比编译性语言执行速度要慢。如果浏览器已经实现了该方法,就不要再用js再去实现一遍了。另外,绝大部分情况下,浏览器已经实现的方法已经在算法方面做了很多优化,再重复实现一遍只是浪费时间和精力还有带宽。当然,如果你只是为了练习算法,那另当别论。

2.尽可能减少循环次数

代码的瓶颈大多在循环,少一层循环,就能数倍地提高性能。如果要对一个数组的每个元素进行多次操作,尽可能使用一次循环,多次操作,而不是多次循环,每次循环执行一次操作。尤其是在进行多个正则匹配的时候,尽可能合并正则表达式,在一次遍历中尽可能找到相应的匹配。…

Merpressor——自动合并压缩与无缝调试

这个是在第19期WEB标准交流会上的分享PPT,分享的内容很简单,主要是大家讨论,都很诚恳地提出了各种想法和意见。在前端这一块,平常的交流太多都在于各种技术交流,而太少关注调试、测试和发布环境。

大的互联网公司可能都有各自的调试、测试和发布流程,但是在这方面的资料实在是不多。Bobby(曾在yahoo台湾,现在盛大创新院) 讲到yahoo内部其实也有这么一套,我的和他们的很类似,遗憾的是内部使用的,也无迹可寻。Hax(盛大创新院)也提到一些想法,比如自动解决依赖关系,部分更新等,都是不错的想法。