Google chrome Chrome:CPU配置文件解析器正在修复n个缺少的示例
我正在使用Chrome的性能选项卡来研究页面的性能,偶尔会收到如下警告: DevTools:CPU配置文件解析器正在修复4个缺少的示例Google chrome Chrome:CPU配置文件解析器正在修复n个缺少的示例,google-chrome,Google Chrome,我正在使用Chrome的性能选项卡来研究页面的性能,偶尔会收到如下警告: DevTools:CPU配置文件解析器正在修复4个缺少的示例 有人知道这是什么意思吗?Google对于这一警告至今没有任何结果。< P>随着这种情况的出现,可能有助于考虑的事情如下: 由于2017年发布了Chrome58,因此对分析性能进行了一些更改。例如: 时间线面板重命名为性能面板。 配置文件面板重命名为内存面板。 录制Javascript CPU配置文件菜单移动到开发工具中→ 右边有三个点→ 更多工具→ Java
有人知道这是什么意思吗?Google对于这一警告至今没有任何结果。< P>随着这种情况的出现,可能有助于考虑的事情如下: 由于2017年发布了Chrome58,因此对分析性能进行了一些更改。例如:
// Sometimes sampler is not able to parse the JS stack and returns
// a (program) sample instead. The issue leads to call frames belong
// to the same function invocation being split apart.
// Here's a workaround for that. When there's a single (program) sample
// between two call stacks sharing the same bottom node, it is replaced
// with the preceeding sample.
根据这些信息,我们可以跟踪代码并检查行为
CPUProfileDataModel.js
let prevNodeId = samples[0];
let nodeId = samples[1];
let count = 0;
for (let sampleIndex = 1; sampleIndex < samplesCount - 1; sampleIndex++) {
const nextNodeId = samples[sampleIndex + 1];
if (nodeId === programNodeId && !isSystemNode(prevNodeId) && !isSystemNode(nextNodeId) &&
bottomNode(idToNode.get(prevNodeId)) === bottomNode(idToNode.get(nextNodeId)) {
++count;
samples[sampleIndex] = prevNodeId;
}
prevNodeId = nodeId;
nodeId = nextNodeId;
}
if (count) {
Common.console.warn(ls`DevTools: CPU profile parser is fixing ${count} missing samples.`);
}
让prevNodeId=samples[0];
设nodeId=samples[1];
让计数=0;
for(让sampleIndex=1;sampleIndex
看起来,它只是简单地比较与当前节点相关的上一个节点和下一个节点,就好像它们具有相同的底部节点一样(实际上比较父节点)。而且上一个节点和下一个节点不应该是系统(program/gc/idle函数)节点和当前节点应为“程序”节点。如果是这种情况,则示例数组中的当前节点设置为上一个节点
空闲:等待处理
程序:本机代码执行
垃圾收集器:垃圾收集帐户 另外,禁用Javascript示例以提高性能→ 捕获设置会导致更少的详细信息和调用堆栈,因为忽略了所有调用堆栈。在这种情况下不应显示警告消息
但是,由于这个警告是关于不能解析JS堆栈和调用帧被拆分的取样器,所以它似乎并不是很重要的考虑。 资源:
引发此警告的行的闪烁源: