Skip to content

Perf Hooks Module (วัดประสิทธิภาพ)

ทำไม perf_hooks ถึงสำคัญ?

perf_hooks คือเครื่องมือสำหรับวัดเวลาและประสิทธิภาพของโค้ดใน Node.js เหมาะกับมือใหม่ที่อยากรู้ว่าโค้ดส่วนไหนช้า และจะปรับปรุงให้เร็วขึ้นได้อย่างไร

  • ใช้ perf_hooks วัดเวลาการทำงานของฟังก์ชันหรือโค้ดบล็อก
  • เหมาะกับการ optimize performance
  • เข้าใจการใช้ timer ที่ละเอียดระดับ millisecond

แนะนำ perf_hooks module

perf_hooks เป็น built-in module สำหรับวัด performance (เช่น เวลาในการรันโค้ด) ใน Node.js

ฟังก์ชันหลักที่ใช้บ่อย

performance.now()

คืนค่าเวลาปัจจุบัน (ms) แบบละเอียด

js
// ใช้ ES Modules (ESM)
import { performance } from "node:perf_hooks";

const start = performance.now();
// โค้ดที่ต้องการวัดเวลา
for (let i = 0; i < 1e6; i++) {}
const end = performance.now();
console.log(`ใช้เวลา: ${end - start} ms`);

อธิบายทีละบรรทัด (ESM):

  1. นำเข้า performance จาก 'node:perf_hooks' ด้วย import (ES Modules)
  2. บันทึกเวลาตอนเริ่มต้นด้วย performance.now()
  3. รันโค้ดที่ต้องการวัดเวลา
  4. บันทึกเวลาตอนจบด้วย performance.now()
  5. คำนวณเวลาที่ใช้ (ms) และแสดงผล

เปรียบเทียบ CommonJS vs ESM

  • CommonJS: const { performance } = require('perf_hooks');
  • ESM: import { performance } from 'node:perf_hooks';

ตัวอย่าง PerformanceObserver (ขั้นสูง)

js
import { performance, PerformanceObserver } from "node:perf_hooks";

const obs = new PerformanceObserver((items) => {
  console.log(items.getEntries());
});
obs.observe({ entryTypes: ["measure"] });

performance.mark("A");
// ... โค้ดที่ต้องวัด ...
performance.mark("B");
performance.measure("A to B", "A", "B");

อธิบาย:

  • PerformanceObserver จะฟัง event การวัด performance
  • ใช้ performance.mark สร้างจุดเริ่ม/จุดจบ แล้ววัดช่วงเวลาระหว่าง mark

กรณีใช้งานจริง

  • วัดเวลาการโหลดไฟล์หรือประมวลผลข้อมูล
  • เปรียบเทียบความเร็วของอัลกอริทึม
  • ตรวจสอบว่าฟีเจอร์ใหม่ช้ากว่าเดิมหรือไม่
  • วัด performance ของ API หรือ async function

ข้อควรระวัง

  • อย่าลืมใช้ performance.now() ทั้งก่อนและหลังโค้ดที่ต้องการวัด
  • PerformanceObserver เหมาะกับ use case ที่ต้อง track หลาย event หรือวัดละเอียด

อ้างอิง

PerformanceObserver

สังเกตการณ์ event performance ต่างๆ (ขั้นสูง)


ตัวอย่างการใช้งานจริง

  • วัดเวลาการโหลดไฟล์หรือประมวลผลข้อมูล
  • เปรียบเทียบความเร็วของอัลกอริทึม
  • ตรวจสอบว่าฟีเจอร์ใหม่ช้ากว่าเดิมหรือไม่

อธิบายการทำงาน

  • performance.now(): วัดเวลาตั้งแต่ Node.js เริ่มรัน (หน่วย ms)
  • ใช้จับเวลาโค้ดช่วงสั้นๆ ได้ละเอียดมาก
  • PerformanceObserver: ใช้กับ use case ที่ต้อง track หลาย event

สรุป

perf_hooks คือเครื่องมือวัด performance ที่ใช้ง่ายและแม่นยำใน Node.js ถ้าเข้าใจการวัดเวลา จะสามารถปรับปรุงโค้ดให้เร็วขึ้นได้

อ้างอิง