javascript的高CPU使用率 – 如何调试?

找到javascript高CPU使用率的最佳方法是什么?

我有一个脚本,只需在缩略图库中加载flickr中的照片。 加载后,没有任何操作(等待您点击它们以显示在灯箱中),但CPU使用率仍然是25%或更多。

我打开了萤火虫,点击了个人资料,稍等了一下再点击它,但它说“没有活动要报告”。 如果有什么事情发生,它会报告吗? 或者我使用这个工具错了?

我在加载所有内容后执行此操作,只是为了查看可能导致高CPU使用率的原因。

谢谢,韦斯利

编辑:似乎已经追溯了它的起源……它与JS无关,但是CSS! 搞什么鬼?

问题是:

我有一个缩略图库,我在图片加载时显示加载指示器而不是缩略图:

.thumbnail img { display:block; background-image: url("/images/ajax-loader.gif"); background-position: center center; background-repeat:no-repeat; overflow:hidden; color:white; } 

如果我删除这个代码,cpu使用率下降到0,03%或者什么……而不是20%…这是因为GIF动画还在播放,但只是掩盖了吗?

我不知道GIF动画从cpu中拿走了这么多? 当然,它已经做了20多次,但仍然如此。 在safari / chrome中也是如此。

我想我应该不使用每个图像内部的加载指示器,或者在成功加载图像时删除背景图像。

我在过去几周使用了工具“dynaTrace AJAX Edition” (免费工具)来分析网站(不仅仅是JavaScript)。 它有一些非常好的视图,显示资源的使用。 尝试跟踪jpu(或浏览器的其他部分)中导致高CPU使用率的部分。 但是该工具仅适用于firefox和当前的Internet Explorer实现,但是当你使用firebug时,这似乎表明你正在使用firefox。

他们的论坛页面上有一个名为“还有什么可以影响浏览器CPU使用率和AJAX性能?”的条目。 这提供了一些可能有用的提示。

尝试在启用FireBug配置文件function后重新加载页面。

我很喜欢使用FireBug配置文件function来执行此操作。 您可以在大多数情况下查看哪些function正在消耗。 太好了。 使用简单的javascript示例在其他页面上尝试此操作。 它应该运作良好。 如果它在您的示例中不起作用,只需向它们发布一个错误。

您可以尝试Chrome / Chromium开发人员工具»Profiler,启动,重新加载页面,等待几分钟然后停止它。 有足够的数据可以找出可能出现问题的线索。

在浏览器上使用高cpu的另一个常见问题是css动画(以及gif图像)。 在开发Web应用程序时,我一直遇到高CPU使用率问题,奇怪的是它只发生在选项卡处于活动/可见时,但是在背景时却没有,并且问题出现在FF,Chrome上和铬。 最后它变成了动画Bootstrap Progress栏。

您可以在http://getbootstrap.com/components/#progress-animated上轻松查看,在Chrome上打开它,打开工具»任务管理器,然后在Bootstrap站点上切换动画并检查cpu使用情况。

我想这不是问题的严格答案,而是找到问题的有用提示。 由于我还没有发表评论,我决定将其作为答案发布,因为有人可能会觉得它很有用,请告诉我这是不是很糟糕的做法。