JS 自我剖析 API

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

JS 自定义分析 API 使网站能够运行采样分析器,以了解 JavaScript 执行时间花费在哪里。

概念与用法

要开始分析,网站会创建一个 Profiler 实例。创建实例后,它将开始对 JavaScript 执行上下文进行采样。

要停止收集样本并检索分析结果,网站会调用 Profiler.stop()。这将返回一个 Promise,该 Promise 解析为一个包含分析数据的对象。

例如,以下函数创建一个分析器,然后调用函数 genPrimes(),然后停止分析器并检索分析数据。

js
async function profileGeneratePrimes() {
  const profiler = new Profiler({ sampleInterval: 10, maxBufferSize: 10000 });

  genPrimes();

  const trace = await profiler.stop();
  console.log(trace);
}

该分析器是采样分析器:这意味着它会定期记录(或采样)JavaScript 调用堆栈的当前状态。分析结果由这些样本的集合组成。这使您能够从统计上了解程序花费大部分时间的地方。

要确切了解分析结果包含什么以及其格式,请参阅 分析结果的结构和格式

分析最佳实践

收集和处理分析数据本身就会产生性能开销,开发者应谨慎管理。最小化性能开销的实践包括:

  • 使用 maxBufferSizesampleInterval 选项来控制要采集的样本数量以及采样频率。
  • 以采样方式进行短时间采样:例如,每 60 秒采样 5 秒。
  • 在 Web Worker 中处理样本,以避免影响主线程的性能。
  • 在将样本发送到遥测端点之前,在客户端聚合样本。

如果您的网站的 JavaScript 被 最小化,您将需要根据 源映射(在客户端或服务器端)转换分析数据,然后才能使用这些数据。

接口

Profiler 实验性

Profiler 接口用于创建分析结果。

安全要求

要使用此 API,必须使用包含 "js-profiling" 配置点的 文档策略 来提供文档。

规范

规范
JS 自我剖析 API

浏览器兼容性