Chrome分析器 - 为什么功能有时会停止一段时间?

时间:2017-09-03 14:48:48

标签: javascript google-chrome profiling google-chrome-devtools profiler

以下是Chrome Performance Devtools捕获的网络执行情况:

enter image description here

我注意到在执行期间,当我的网络功能停止时,功能将被停止多次Chrome会执行一些RegExp操作(如图所示)。我不明白这是什么,为什么会发生。请帮忙解释一下,谢谢。

更新:这是一个也以相同方式执行的功能:

enter image description here

1 个答案:

答案 0 :(得分:5)

您描述的内容

你描述问题的方式听起来你认为JavaScript虚拟机在执行时(即在它们返回之前)将函数置于保持状态(停止它们)以执行其他操作然后恢复功能。

您展示的图片并不表示对我而言。

我看到了什么

VM执行:

  • callback,调用
  • 某个函数,其名称由工具提示隐藏,调用:
  • fireWith,其中称之为:
  • fire,其中称之为:
  • 等...

然后最深的函数返回,并且调用它的那个返回,依此类推,直到fire返回,fireWith返回,我们无法读取的名称的函数返回,并且{{ 1}}返回。

然后VM运行一个RegExp函数,它再次调用一个名为callback的函数,整个事情重新开始。 换句话说,第二列callback,其余是函数的新调用。函数不是"停止[ping]一段时间" :它们被多次调用。

我总是在库中看到这些响应事件的情况。它们通常会遍历事件处理程序来调用它们。考虑到一个足够复杂的库,有相当数量的粘合代码可能位于调用处理程序的循环和自定义代码之间,因此在分析中会出现大量重复调用。