了解 Firebug 探查器输出

2024-04-08

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

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

然而,当我深入研究详细结果时,我看到了带有average执行时间大于 464.323 ms,例如平均时间最长的结果报告以下详细信息:

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 中将鼠标悬停在其上方时的含义。我假设您可以自己阅读每一列的工作原理。但是,您肯定遇到过一些需要解释的奇怪行为。

The own time是函数在其内部执行代码所花费的时间。如果该函数没有调用其他函数,则own time应该是一样的time。但是,如果存在嵌套函数调用,则time还计算执行它们所花费的时间。所以,time几乎总是大于own time,并且在大多数情况下加起来会超过探查器报告的总时间。

然而,没有single功能time应大于探查器记录的 JavaScript 调用的总时间。这个问题绝对是一个错误,我可以理解为什么当 Firebug 给你提供如此矛盾的输出时你很难相信它。我相信我已经找到了这个错误发生的原因:AJAX。

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

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

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

在这个例子中,关于time vs. own time, the own time每个函数的总时间加起来就是探查器的总时间,但是time列包含 AJAX 调用与服务器通信所花费的时间。这意味着time如果您只关注 JavaScript 的执行速度,则该列不正确。

情况变得最糟:因为time, 平均时间, min and max所有计数嵌套函数调用,如果您使用 AJAX,它们都是不正确的。最重要的是,任何最终使用 AJAX(在嵌套函数调用中)的函数也将错误地报告其时间。这意味着很多函数可能会报告不正确的信息!因此,在 Firebug 修复问题之前,暂时不要相信任何这些列。 (他们可能希望这种行为是这样的,尽管保持这种方式充其量是令人困惑的。)

如果您不使用 AJAX,那么就会出现另一个问题;如果您是或不是,请告诉我们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解 Firebug 探查器输出 的相关文章

  • 为什么 Internet Explorer 不喜欢这个 jQuery?

    在调试一些在 IE 中不起作用的 jQuery 时 我发现了以下错误消息 var item item itemArray itemIndex find a text trim Object doesn t support this prop
  • 使用 Google Autocomplete API 根据位置名称获取纬度和经度

    我的页面中有一个文本框 它获取位置名称和带有文本的按钮getLat Long 现在点击我的按钮我必须显示一个警报latitude and longitude文本框中的位置 有什么建议吗 您可以使用谷歌地理编码服务 http code goo
  • React Native 将样式设置为 State

    我想用backgroundColor of style1作为一种状态 并在函数中改变它change 我怎样才能访问style1 我的观点是调用该函数change从另一个函数 使按钮将其颜色更改为黄色 然后在一段时间后再次将其颜色更改为蓝色
  • 等待 JavaScript 中 Json 调用完成

    我正在使用下面的json调用在我的 javascript 方法中 function go123 var cityName var temp getJSON https abc in api city callback args functi
  • Atom“自动完成”不起作用

    因此 当您安装 Atom 时 autocomplete 会随其一起提供 并且默认情况下处于启用状态 当我编写代码时 什么也没有显示 为什么 是否需要配置任何文件才能正常工作 In autocomplete plus settings pag
  • jquery/javascript 处理后移至命名锚点

    在进行一些 jquery 处理后 如何将焦点移动到同一页面上的不同部分 名为锚点 函数 ABC 进行一些处理 然后 我需要将用户移动到同一页面上的某个部分 页面下方 您可以使用下面的代码将屏幕滚动到 div 只需更改选择器以匹配您要滚动到的
  • Chart.js 没有显示在我的视图中

    我有一个使用 angular js 运行的应用程序 我的视图之一应该加载图表 我正在使用 Chart js 但由于某种原因它不起作用 并且我的控制台上没有显示错误 这是我创建图表的函数 scope writeBatteryChart fun
  • KineticJS - 将舞台缩放到视口

    我正在努力将默认分辨率设置为 1366x756 我会根据视口来放大和缩小它 类似于此处显示的示例 http blogs msdn com b davrous archive 2012 04 06 modernizing your html5
  • 通过单击字段启用非活动字段

    是否可以有一组非活动字段 如果单击其中一个字段 则某些字段将变为必填字段并运行某些代码段 举例来说 您显示了三个字段
  • Backbone-relational 无法实例化两个 RelationalModel 对象

    我正在尝试实现 BackboneRelational 并不断获得 无法实例化多个 Backbone RelationalModel 每种类型都有相同的 ID class App Models User extends Backbone Re
  • 如何最好地实现多个重叠元素的翻转和推出事件?

    Problem 我正在开发一个网站 其中有一个 拨号盘 显示代表伞式公司不同部门的多个选项卡 目前我已经用 HTML CSS 准备好了一切 每个选项卡的定位 内圈处于较高位置z index因为选项卡在滚动时需要向外动画 我可以实现这部分 选
  • Node.js 和 Express:异步操作后如何返回响应

    我是 Node js 新手 所以我仍然对异步函数和回调很感兴趣 我现在的难题是如何在异步操作中从文件读取数据后返回响应 我的理解是发送回复的工作方式如下 这对我有用 app get search function req res res s
  • CKEditor TypeError:c[a] 在 CodeIgniter 中未定义

    我正在尝试在基于 codeigniter 的网站中安装 CKEditor 并且我已按照本教程进行操作 Codeigniter 教程中的 CKEditor http nukium com developpement php framework
  • 将 javascript 变量发送到服务器端 ASP .NET

    我需要在回发时将 JavaScript 数据传递到服务器端 Exvar jsVariableToPass new Object jsVariableToPass key1 value1 jsVariableToPass key2 value
  • 在javascript中定义Date.parse的格式[重复]

    这个问题在这里已经有答案了 我正在使用 Date parse 将字符串转换为 JavaScript 中的日期 但是 如果字符串看起来像 10 11 2016 它会被解释为 2016 年 10 月 11 日 我需要将其解释为 2016 年 1
  • 如何修复 AJAX 在选中复选框时始终触发?

    有时这个 AJAX 会触发 有时不会 让我解释一下 habit js document ready function habit check change function habit this parent siblings habit
  • 如何在 Javascript 中将字符串数组转换为特定的树结构

    我从后端获取文件路径列表 它代表文件夹结构 如下所示 paths path to file1 doc path to file2 doc foo bar doc 路径的长度是任意的 为了使用文件树组件 角度2树组件 https github
  • JavaScript 数组中的负索引是否会影响数组长度?

    在javascript中我定义了一个像这样的数组 var arr 1 2 3 我也可以做 arr 1 4 现在如果我这样做 arr undefined 我也失去了对值的引用arr 1 所以对我来说 从逻辑上来说 arr 1 也是arr 但是
  • JavaScript 右移负数

    这是片段 var i 101 console log 101 i toString 2 console log 101 gt gt 1 i gt gt 1 toString 2 var l 101 console log 101 l toS
  • addEventListener keydown 不起作用

    我在互联网上找到了一些基本的 Pong 代码 并尝试添加按键 代码在这里 http cssdeck com labs ping pong game tutorial with html5 canvas and sounds http css

随机推荐

  • 使用 PHP 的交互式 shell

    是否可以单独使用 PHP 创建交互式 shell 我的意思是像数据库一样 Python https en wikipedia org wiki Python 28programming language 29等等 如果是的话 怎么样 是的
  • Github 下载页面/按钮不再可见

    我曾经使用存储库中文件选项卡上的下载 添加下载 按钮上传二进制文件 这个功能好像没有了 有人知道为什么吗 临时 Github 问题 浏览器问题 GitHub 上传已于 12 月 11 日停止 请参阅博客文章 https github com
  • "rdtsc": "=a" (a0), "=d" (d0) 这是做什么的? [复制]

    这个问题在这里已经有答案了 我是 C 和基准测试的新手 我不明白这部分代码的作用是什么 所以我发现了一些关于 edx eax 寄存器的信息 但我不完全理解它是如何在代码中发挥作用的 所以我理解这段代码本质上返回了CPU周期的当前滴答声 那么
  • 如何在 Playgrounds 中设置 ViewController?

    在 Swift Playgrounds 中 如何设置视图控制器并使用它 我之前用 UIView 做过 但是当方向不同时 UI 会被剪切 所以我想尝试使用视图控制器 我有let view UIViewController 但在那之后我该如何设
  • Office-js Excel:获取新保存文件的文件名

    如何获取新保存文件的文件名 通常 我可以使用以下方式获取文件名 Office context document url 然而 当用户打开一个新工作簿时 它实际上没有文件名 而且奇怪的是 即使保存后 这行代码也不起作用 相反 他们必须保存它
  • 在 UIImage iOS 6.0 的所有四个面上添加阴影

    我正在尝试向 imageView 的所有四个侧面添加阴影 我看到 self shadowView layer shadowOffset CGSizeMake 10 20 在两侧添加阴影 如何在四个面上都添加阴影 刚刚设置shadowOffs
  • 从列表创建变量并全局访问

    我正在编写一个程序 从数据库中提取部门列表 我想避免对此进行硬编码 因为列表可能会发生变化 我想为每个部门创建一个变量 将问题填充到 GUI 中 我遇到的问题是我可以使用 vars 函数从数据库列表中创建变量 然后 我存储变量名称列表 以便
  • Java 相当于 C++ 加密 [重复]

    这个问题在这里已经有答案了 我有以下用于加密的 C 代码片段 EVP CIPHER CTX ctx const EVP CIPHER cipher EVP des ede3 cbc unsigned char iv EVP MAX IV L
  • 如何通过直接链接将 WebCal/iCalendar 添加到 Google 日历

    您可以通过直接链接将 Google 托管的日历添加到您的 Google 日历帐户 例如澳大利亚假期 https www google com calendar embed src en australian 23holiday 40grou
  • 在 makefile 中,目录名是假目标还是“真实”目标?

    根据我所读到的有关 makefile 的内容 虚假目标是指与实际文件名不对应的任何目标 我的直觉表明 作为目标的目录将被视为与文件相同 为什么这很重要 我的 makefile 中有一个目录作为目标 当我将其作为主要可执行文件的先决条件时 无
  • 如何以编程方式访问 NIB 中的 UI 元素而不“连接”它们?

    我正在考虑编写一些辅助函数 以便更轻松地对 iPhone NIB 中的 UI 元素进行简单的更改 主要是 我想通过 Interface Builder 中的名称访问 UILabel 或其他元素 这可能吗 有更聪明的方法吗 Example 假
  • 用于旋转 QWidget 的 QPropertyAnimation

    我是 Qt 新手 遇到一些问题QWidget回转 我在 QLabel 中有一个 QPixmap 我想要的是让它连续旋转 90 度 I know QPropertyAnimation我知道如何使用它 但我正在努力解决如何使用它来旋转QWidg
  • 向下滑动动画Angular 4

    我正在尝试为我的页面添加动画效果 但遇到以下问题 我的页面上有内容 div 以及一个可在内容上方打开另一个 div 的按钮 我希望该 div 淡出并滑入 并且下面的 div 也向下 向上滑动 我为上面的 div 创建了我想要的动画 该动画在
  • 如何删除 JavaScript 数组元素并重置键

    我有一个如下所示的数组 var fields name mark age 23 name smith age 28 name kelvin age 25 name micheal age 22 我知道字段现在将具有索引 键 0 1 2 3
  • 找出哪些超类包含属性或方法实现

    如果我已经正确记录了方法或属性 我可以通过键入找到它的定义位置help class method 这会告诉我Help for class method is inherited from superclass otherclass 通常 这
  • 为什么 Android 中的 Loader 很糟糕

    我读过几条推文和评论 说装载机很糟糕 使用它们是 朝自己脸上开枪 的好方法 还普通人宣布他将停止他的图书馆的任何工作 Loaderex 平民还说 加载器是一个失败的抽象 我显然在这里遗漏了一些东西 我想了解更多信息并了解为什么装载机不好以及
  • 如何删除具有相同imageID的多个docker镜像?

    我创建了一个本地 Docker 注册表 https docs docker com registry deploying 然后从 docker hub 中提取一些 docker 镜像 然后将它们推送到本地注册表 现在我想删除我的本地图像 但
  • QT - 将按钮放在右下角

    我正在尝试放置一组按钮 以便它们固定在屏幕的右下角 我的问题是 每当我调整屏幕大小时 按钮都不会固定在右下角 而是保留在当前位置 我在水平布局中放置了两个按钮 然后 我将此布局放置在网格布局内 其中包含水平和垂直间隔符 我已将网格布局的la
  • AVAudioCompressedBuffer 到 UInt8 数组,反之亦然

    我想知道如何获取 AVAudioCompressedBuffer 的字节 然后 从字节重建 AVAudioCompressedBuffer 下面的代码采用 AVAudioPCMBuffer 使用 AVAudioConverter 将其压缩为
  • 了解 Firebug 探查器输出

    我一直在尝试使用 Firebug 的分析器来更好地理解我们所看到的一些 JavaScript 性能问题的根源 但我对输出有点困惑 当我分析一些代码时 分析器会报告配置文件 464 323 毫秒 26 412 次调用 我怀疑 464 323