gpt4 book ai didi

javascript - 了解 Firebug 探查器输出

转载 作者:IT王子 更新时间:2023-10-29 03:14:55 25 4
gpt4 key购买 nike

我一直在尝试使用 Firebug 的探查器来更好地理解我们所看到的一些 JavaScript 性能问题的根源,但我对输出有点困惑。

当我分析一些代码时,分析器报告分析(464.323 毫秒,26,412 次调用)。我怀疑 464.323 毫秒是这 26,412 次调用的执行时间的总和。

但是,当我深入查看详细结果时,我看到个别结果的平均执行时间大于 464.323 毫秒,例如平均时间最长的结果报告以下详细信息:

Calls: **1**
Percent: **0%**
Own Time: **0.006 ms**
Time: **783.506 ms**
Avg: **783.506 ms**
Min: **783.506 ms**
Max: **783.506 ms**

另一个结果报告:

Calls: **4**
Percent: **0.01%**
Own Time: **0.032 ms**
Time: **785.279 ms**
Avg: **196.32 ms**
Min: **0.012 ms**
Max: **783.741 ms**

在这两个结果之间,时间结果的总和远远超过 464.323。

那么,这些不同的数字是什么意思?我应该信任哪些?

最佳答案

如果您在 Firebug 中将鼠标悬停在每一列上,则每列都有一个说明。我假设您可以自己阅读每一列的工作原理。但是,您肯定遇到过一些需要解释的奇怪行为。

自己的时间 是函数在其内部执行代码所花费的时间。如果该函数不调用其他函数,则自己的时间 应该与时间 相同。但是,如果存在嵌套函数调用,则time 还会计算执行它们所花费的时间。因此,时间 几乎总是大于自己的时间,并且在大多数情况下加起来会超过探查器报告的总时间。

但是,单个 函数的时间 不应大于探查器记录的 JavaScript 调用的总时间。这个问题绝对是一个错误,我明白为什么当 Firebug 给你这样一个自相矛盾的输出时你很难相信它。我相信我已经找到了这个错误发生的原因:AJAX。

AJAX 调用似乎导致统计嵌套函数调用的列报告不正确的信息。他们最终计算了 JavaScript 执行时间对服务器的请求。

您可以通过执行以下操作来重现此探查器错误:

  1. 访问任何使用 AJAX 的网站。 (我用了 http://juicystudio.com/experiments/ajax/index.php )
  2. 启用控制台/脚本调试。
  3. 打开分析器。
  4. 进行 AJAX 调用。 (多个可能更能说明问题。)
  5. 停止分析器,检查输出。

在此示例中,关于时间自己的时间,每个函数的自己的时间加起来就是分析器的总时间但是 time 列包含 AJAX 调用与服务器对话所花费的时间。这意味着如果您只查找 JavaScript 的执行速度,time 列是不正确的。

情况变得最糟:因为 time平均时间minmax 都计算嵌套函数调用,如果您使用的是 AJAX,它们都是不正确的。最重要的是,任何最终使用 AJAX 的函数(在嵌套函数调用中)也会错误地报告它们的时间。这意味着很多功能可能会报告不正确的信息!因此,在 Firebug 解决问题之前,暂时不要信任这些列中的任何一个。 (他们可能希望这种行为是这样的,尽管这样最多只会让人感到困惑。)

如果您不使用 AJAX,则说明另一个问题在起作用;如果您是,请告诉我们。

关于javascript - 了解 Firebug 探查器输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/267618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com