分析JavaScript的性能

Photo by Joan Gamell on Unsplash

分析JavaScript的性能

·

1 min read

Kirk Pepperdine在一篇新文章中详细讨论了关于JavaScript性能的主题。他的第一个发现是JavaScript引擎规范要比JVM的脆弱的多。有太多的JavaScript实现,各自具有不同的执行环境。除了这一点外,他还深入了下列主题:

Getters/Setters

……我所遭遇的最具争议的一项建议,在Java世界里已经很久没人提起过了。这项建议是,应该避免使用getter和setter,而应当采用直接访问来避免方法调用的额外开销。这项建议错在哪里?更重要的是,它对在哪里?在Java中使用getter和setter是被普遍认可的……

Ajaxian和JQuery的创建者John Resig曾经讨论过getter和setter。就像这个网站所演示的,是出于性能上的考虑。

由于缓存造成的糟糕的局部基准评测(Micro-benchmark**
**

……由于JavaScript引擎中少得多的动态优化,有人会觉得局部基准评测要比在Java中容易得多。虽然问题是不同的,但是JavaScript的局部基准评测也没那么容易。糟糕的局部基准评测的最普遍的原因是缓存。在Web世界中缓存无处不在,伴随始终。而且通常它隐藏的很深……

内存泄露

……最有趣的发现是关于内存泄露和内存调优的优秀blog很少……我的最大问题是,如何在浏览器中得到来自JavaScript的内存泄露呢。我发现有几种好办法。第一个是在DOM中保留大量的隐藏元素……另一种更有趣和更可憎的内存泄露来自于闭包……

CPU负载

……最后,几篇讨论客户机性能的blog指出一个存在的问题,但似乎遇到这个问题的JavaScript应用程序并不太多。这个问题就是过度使用JavaScript会耗尽CPU……如果你试图让JavaScript做太多事情,它就会约束客户机的CPU效率(在那种情况下,性能削减的厉害)……

Pepperdine在结束时提到Yahoo的基于Firebug的新性能工具YSlow,它能够检查大量预先定义好的常见JavaScript性能问题。另外一个最近发布的性能工具是JsLex,它可以比较JavaScript的执行性能,类似于jProfile。微软研究院也在开发一种调优代理技术,叫做Ajax View

查看英文原文:Analyzing JavaScript in Respect to Performance

作者 Scott Delap译者 张凯峰 发布于 2007年9月3日