Dark mode
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):
- นำเข้า performance จาก 'node:perf_hooks' ด้วย import (ES Modules)
- บันทึกเวลาตอนเริ่มต้นด้วย performance.now()
- รันโค้ดที่ต้องการวัดเวลา
- บันทึกเวลาตอนจบด้วย performance.now()
- คำนวณเวลาที่ใช้ (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 ถ้าเข้าใจการวัดเวลา จะสามารถปรับปรุงโค้ดให้เร็วขึ้นได้