性能问题常常在你开发最新最棒的 web 2.0 应用程序时悄然而至,成为你的绊脚石。很多时候,性能问题仅是由极为平常的良性操作所造成。最近, Coach Wei 对许多不同的 Javascript 操作的性能及其在各浏览器下的性能表现作了快速的比较与小结。结果实际上并不完全出乎我们的意料。
正如所料,eval 仍然很“邪恶”,在所有的浏览器下都很慢。但特别有趣的是,说它在 Safari 下性能差似乎并不公平,因为相对于 eval 在 IE7 下需要 172ns,在 Firefox 下需要 546ns 的表现,它在 Safari 下只占用 9.4ns。Shift 和 Join 这些数组操作在众浏览器下都很扯性能的后腿。
在他的结果报告中,有一点很有意思,但也是意料之中的事,那就是,IE 在性能方面的表现不如其它浏览器,尤其是在关键的 computed box model 计算、String 处理、以及 HTML DOM 操作方面。另外,正如我们之前所看到的,虽然较新的浏览器版本有一些改善,但 DOM 操作一般在各浏览器下的开销依旧很大。而且,使用 innerHTML 似乎仍然比完成相同任务的 DOM 操作性能更好。
该研究报告中,其它一些值得关注的要点有:
- Safari 的 pop 数组操作明显不及其他浏览器的实现。
- 计算 computed style 和 computed box model 开销可能很大……这可能是由于每次调用对 currentStyle 属性进行重计算所造成。
- 对象的创建和"in"操作在 Firefox 下运行得比其他浏览器慢。
Coach Wei 的关于比较结果的综合表,很值得一看,很多结果都可以成为你 debug 性能瓶颈时的指南。
评论