JS Self-Profiling API

Khả dụng hạn chế

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

JS Self-Profiling API cho phép một trang web chạy một trình lấy mẫu profiler, để hiểu nơi nó đang dành thời gian thực thi JavaScript.

Khái niệm và cách sử dụng

Để bắt đầu một profile, một trang web tạo một phiên bản Profiler. Ngay khi phiên bản được tạo, nó bắt đầu lấy mẫu ngữ cảnh thực thi JavaScript.

Để dừng thu thập mẫu và truy xuất profile, trang web gọi Profiler.stop(). Điều này trả về một Promise phân giải thành một đối tượng chứa dữ liệu profile.

Ví dụ, hàm sau tạo một profiler, sau đó gọi một hàm genPrimes(), sau đó dừng profiler và truy xuất dữ liệu profile:

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

  genPrimes();

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

Profiler là một trình lấy mẫu profiler: có nghĩa là nó định kỳ ghi lại (hoặc lấy mẫu) trạng thái hiện tại của call stack JavaScript. Profile bao gồm tập hợp các mẫu này. Điều này cho phép bạn hiểu, về mặt thống kê, nơi chương trình đang dành hầu hết thời gian của mình.

Để hiểu chính xác một profile chứa gì và cách nó được định dạng, xem Cấu trúc và định dạng profile.

Thực tiễn tốt nhất khi profiling

Việc thu thập và xử lý dữ liệu profile tự nó gây ra chi phí hiệu suất, và các nhà phát triển nên cẩn thận để quản lý điều này. Các thực hành để giảm thiểu chi phí hiệu suất bao gồm:

  • Sử dụng các tùy chọn maxBufferSizesampleInterval để kiểm soát bao nhiêu mẫu cần lấy và tần suất lấy mẫu.
  • Lấy mẫu trong các khoảng thời gian ngắn theo kiểu lấy mẫu: ví dụ, theo dõi trong 5 giây trong mỗi 60 giây.
  • Xử lý các mẫu trong một web worker để tránh ảnh hưởng đến hiệu suất trên luồng chính.
  • Tổng hợp các mẫu trên client trước khi gửi chúng đến endpoint telemetry.

Nếu JavaScript trong trang web của bạn bị rút gọn, bạn sẽ cần chuyển đổi dữ liệu profile dựa trên source map, trên client hoặc trên server, trước khi dữ liệu có thể sử dụng được.

Giao diện

Profiler Thử nghiệm

Giao diện Profiler được sử dụng để tạo các profile.

Yêu cầu bảo mật

Để sử dụng API này, tài liệu phải được phục vụ với document policy bao gồm điểm cấu hình "js-profiling".

Thông số kỹ thuật

Thông số kỹ thuật
JS Self-Profiling API

Tương thích trình duyệt