测量Javascript应用程序的CPU负载

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (22)

我需要测量其他Javascript事件绑定(使用jQuery live)的性能开销,这些开销可能会增加CPU负载,并且很难从执行时间剖析中注意到。

我如何测量两个不同版本的Javascript应用程序之间的CPU负载差异?

提问于
用户回答回答于

另一个分析选项是dynaTrace Ajax版本。Resig 在这里有一个快速的概述。这是特定于IE浏览器(但是......这是大多数情况下性能最差的那种...)

看看,这里的所有建议都很棒,如果你正在查看IE问题(一些内联网应用程序被锁定),那么dynaTrace是一款优秀且仍然免费的工具。

用户回答回答于

Chrome开发工具非常棒,但由于Chrome浏览器不是浏览器,所以您不得不担心JS的性能,并且它会优化很多事情,但对于查找其他浏览器的瓶颈没有多大帮助。 IE 8有开发工具,可以让你进行配置,所以除了通常的Firebug探查器之外,你可能会发现它很有用。

但是关于你的情况,让我说只是绑定一个事件并不会导致太多的CPU负载,更多的是内存问题,但是除非你在页面上做了一些不寻常的事情,否则你不必担心。

另外,如果您特别关注jQuery.live函数,请让我快速解释它的工作原理:假设您这么做 $('#linksWrap a').live('click', fn);

  • 这会创建一个且只有一个事件处理程序,并将其附加到该处理程序#linkswrap
  • 当你点击其中一个链接时,点击事件会冒泡DOM树,最终到达#linkswrap
  • jQuery.live检测它实际来自哪个链接。此信息位于浏览器的Event对象中。
  • jQuery.live fn在点击链接的上下文中应用

正如你所看到的,它实际上非常有效。浏览器只附加一个事件,所以内存使用率很低,并且不需要经常检查新的元素,它以一种很酷的方式使用事件冒泡。

事实上,有人可能会争论说,如果您将数千个事件附加到页面上,那么.live方法可能会更高效,假设您使用了好的选择器。(例如.something .foo .bar.baz需要大量的遍历和冒泡,但#parentOfTheLinks a.links会很快)

扫码关注云+社区