Chrome开发者工具Profiler显示与console.log不同数量的方法调用

时间:2015-05-28 11:49:11

标签: javascript google-chrome google-chrome-devtools performancecounter

我正在使用Chrome中Dev Tools的“个人资料”标签。在配置文件中,我看到函数resizeDocument的条目被调用了6次以上,值为113ms,17ms,45ms等。相同的行号,相同的文件,相同的一切。

当我从resizeDocument功能中的控制台登录时,我只能输入一个条目。发生了什么事?

enter image description here

enter image description here

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:4)

原因是chrome中的CPU分析器的性质。它是一个抽样分析器。因此它收集正在运行的程序的调用堆栈(示例),并使用它们来重建图表视图中的条形。

例如,如果探查器收集了1000个样本,其中一个调用帧用于函数&f; foo'在每个样本中,你会看到1s长条带有' foo'名字在里面。

分析器可能无法收集下一个堆栈跟踪。例如,当分析器在函数“foo”时尝试从堆栈中收集调用帧时,就会发生这种情况。叫做功能' bar'就在样本之前。此时,在通话指令后,功能' bar'为' foo'构建调用框架在堆栈上。因此,堆栈上的调用帧目前处于无效状态。探查器检测到并丢弃样本。结果,堆栈跟踪序列中出现间隙。

在这种情况下,两个不同的酒吧用于' foo'将被建造。

当探查器无法收集调用堆栈时,还有一些其他原因。