在不使浏览器崩溃的情况下分析 JavaScript

Posted

技术标签:

【中文标题】在不使浏览器崩溃的情况下分析 JavaScript【英文标题】:Profiling JavaScript without crashing your browser 【发布时间】:2011-04-24 09:30:49 【问题描述】:

所以尝试分析一些代码,我认为最简单的方法(至少在 Firefox 上)是使用 consoletime/timeEndprofile/profileEnd ,我都试过了。

我遇到的问题是在 Firefox 崩溃之前我可以运行的次数。现在我不会在这里粘贴代码,因为它是典型的基准测试代码(而且非常混乱),但显然它的要点是它运行函数(测试用函数表示),记录它们的执行时间一定数量运行次数。

现在以 5e4 为例,它可以工作,但我认为它不足以发现(非常)微优化,但更重要的是,它会崩溃。

那么你如何分析你的 javascript 呢?因为这种方式,几乎是行不通的。

【问题讨论】:

【参考方案1】:

当我用来分析我的 JavaScript 代码时,我使用了 Chrome 的分析器;开发人员视图中的 JavaScript 控制台提供了它,它对我来说非常有用。你试过吗?

【讨论】:

但是,当您进行大量运行分析时,它是否会使您的 Chrome 崩溃?这就是重点。 很抱歉之前没有指定。我并没有真正把它推到极限,所以我不能在这里真正回答,但我建议你试一试。【参考方案2】:

我尝试在 FF4 上的 Firebug 和 Chrome(最新版本)中使用大量脚本分析页面。 Firefox 在一两秒内崩溃,Chrome 似乎没有问题。也许您可以在Firebug issues list 中找到相关内容?

【讨论】:

但这并不是 Firebug 的真正问题。我的循环使 Firefox 崩溃,而不是 Firebug 的分析器。 在我运行 Firebug 分析器之前,我的循环不会使 FB 崩溃,所以我会说这是一个组合。 好吧,我在安装和卸载 Firebug 的情况下都试过了。而且,如果是 Firebug 的原因,为什么它也会在 Chrome 和 IE 中崩溃?【参考方案3】:

虽然不是传统的代码分析器,但我推荐Google's Speed Tracer:

使用 Speed Tracer,您可以更好地了解您的应用程序花费了哪些时间。这包括由 JavaScript 解析和执行、布局、CSS 样式重新计算和选择器匹配、DOM 事件处理、网络资源加载、计时器触发、XMLHttpRequest 回调、绘画等引起的问题。

【讨论】:

【参考方案4】:

我认为JavaScript Debugger(又名Venkman)中的分析器非常好。 addons.mozilla.org 上当前的版本与 Firefox 4 不兼容,但已提交使其工作所需的更改。详情请见https://bugzilla.mozilla.org/show_bug.cgi?id=614557。

【讨论】:

嗯,Firefox 4.0.1 不可用: 您可以从 Mercurial 获得 4.0 兼容版本。有关更多信息,请参阅链接的 bugzilla 页面(刚刚更新)。【参考方案5】:

dynaTrace AJAX edition(free)- 你包里又多了一个工具。恕我直言,提供更详细的性能指标。他们以前只支持 IE,但他们的新版本也支持 FF。另见Steve Sounder's blog

【讨论】:

以上是关于在不使浏览器崩溃的情况下分析 JavaScript的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使当前视图颤动的情况下实现这种幻灯片效果

如何在不使它们不可变的情况下使 python 数据类可散列?

在不使结构只读的情况下避免使用带有结构的“in”对性能造成的影响?

SQLAlchemy:如何在不使其成为主键的情况下使整数列 auto_increment (且唯一)?

C# 中有没有办法在不使调用者也异步的情况下调用异步方法? [复制]

您可以在不使其无状态的情况下将 Spring Security 与 REST 服务一起使用吗?