Node.js menyediakan alat yang ampuh untuk mengukur dan mengoptimalkan kinerja aplikasi Anda. Salah satu alat tersebut adalah Performance API, yang memungkinkan pengembang untuk menangkap stempel waktu resolusi tinggi dan berbagai metrik kinerja. Panduan ini akan memperkenalkan Anda pada komponen-komponen utama dari Node.js Performance API dan cara menggunakannya secara efektif.
Mengapa Kinerja Penting dalam Node.js
Node.js bersinar dalam arsitektur asinkron berbasis peristiwa, sangat cocok untuk tugas-tugas terikat I/O. Namun, bahkan dalam lingkungan non-pemblokiran ini, kinerja tetap menjadi yang terpenting. Aplikasi yang lambat menyebabkan pengguna frustrasi dan menghambat skalabilitas. Mengidentifikasi hambatan dan mengoptimalkan kode menjadi penting untuk pengalaman pengguna yang lancar.
Tertarik untuk meningkatkan waktu respons API Anda? Artikel berikut menawarkan panduan langkah demi langkah tentang cara meningkatkan waktu respons API Anda.

Mengapa Menggunakan Node.js Performance API?
- Identifikasi Hambatan Kinerja: Hambatan kinerja dapat secara signifikan menurunkan pengalaman pengguna. Dengan menggunakan Performance API, pengembang dapat menentukan momen-momen pasti di mana penundaan terjadi, baik dalam eksekusi fungsi, pemuatan sumber daya, atau penanganan permintaan HTTP. Ketepatan ini memungkinkan optimasi yang ditargetkan.
- Optimalkan Penggunaan Sumber Daya: Memantau kinerja membantu dalam memahami bagaimana sumber daya seperti CPU dan memori digunakan. Dengan mengidentifikasi penggunaan sumber daya yang tidak efisien, pengembang dapat mengoptimalkan kode mereka agar lebih efisien, mengurangi biaya, dan meningkatkan skalabilitas.
- Tingkatkan Pengalaman Pengguna: Aplikasi yang merespons dengan cepat memberikan pengalaman pengguna yang lebih baik. Performance API membantu dalam mengukur metrik utama seperti Time to First Byte (TTFB) dan First Contentful Paint (FCP), memungkinkan pengembang untuk membuat peningkatan yang mengarah pada waktu muat yang lebih cepat dan interaksi yang lebih lancar.
- Tingkatkan Stabilitas Aplikasi: Pemantauan kinerja berkelanjutan membantu dalam mendeteksi anomali dan potensi masalah sebelum menjadi kritis. Pendekatan proaktif ini memastikan waktu aktif dan keandalan aplikasi yang lebih tinggi.
Pengantar Node.js Performance API
Performance API, yang dapat diakses melalui modul perf_hooks
, membekali pengembang Node.js dengan perangkat komprehensif untuk mengukur dan menganalisis kinerja aplikasi. Ini menawarkan keuntungan signifikan dibandingkan metode tradisional seperti Date.now()
, menyediakan pengaturan waktu resolusi tinggi dan pendekatan yang lebih terstruktur untuk evaluasi kinerja. Dalam metode Date.now()
, Anda akan melihat sesuatu seperti;
const startTime = Date.now();
// call a function to perform a task()
console.log(`Task duration: ${Date.now() - startTime} milliseconds`);
Fungsi Date.now() berfungsi dengan baik, tetapi sekali lagi, meskipun tampak mudah, metode ini bisa jadi tidak dapat diandalkan karena perubahan jam sistem dapat mengganggu pengukuran.
Di sinilah Node.js Performance API hadir. Kita ingin dapat sepenuhnya mengukur penggunaan waktu aplikasi kita dan tidak terganggu dengan hal-hal seperti jam sistem, bukan?
Node.js Performance API dibangun di sekitar beberapa metode dan kelas inti yang disediakan oleh modul perf_hooks
. Ini termasuk:
Masing-masing alat ini melayani tujuan yang berbeda dalam menangkap dan menganalisis metrik kinerja.
Menggunakan performance.now()
Metode performance.now()
mengembalikan stempel waktu resolusi tinggi dalam milidetik. Ini berguna untuk mengukur interval dalam aplikasi Anda dengan presisi yang lebih besar daripada Date.now()
.
Untuk mendapatkan durasi suatu tugas, tambahkan metode performance.now() di awal dan akhir operasi yang ingin Anda ukur sebagai berikut;
const { performance } = require('node:perf_hooks');
const start = performance.now();
// Perform some operations
const end = performance.now();
console.log(`Time taken: ${end - start} ms`);
Pertama-tama, kita mengimpor kinerja dari modul node, dan kemudian kita membuat konstanta start dan end dan menetapkan metode performance.now ke mereka untuk mendapatkan waktu operasi yang akurat.
Output dari kode di atas seharusnya terlihat seperti berikut;
Time taken: 1253.**** ms.
Menggunakan performance.mark()
Metode performance.mark()
di Node.js memungkinkan Anda membuat stempel waktu bernama (atau mark) pada titik-titik tertentu dalam kode Anda. Mark ini membantu Anda mengukur waktu yang dibutuhkan antara bagian-bagian berbeda dari aplikasi Anda, memberi Anda wawasan tentang hambatan kinerja.
const { performance } = require('node:perf_hooks');
performance.mark('A');
// Some operations
performance.mark('B');
Dalam contoh ini, performance.mark('A') dan performance.mark('B') membuat dua mark berlabel 'A' dan 'B', masing-masing.
Mark juga dapat menyertakan detail tambahan, yang dapat berguna untuk debugging atau analisis lebih lanjut.performance.mark('A', { detail: 'Start of operation' }); performance.mark('B', { detail: 'End of operation' });
Di sini, properti detail
memberikan informasi tambahan tentang apa yang diwakili oleh setiap mark.
Setelah Anda membuat mark, Anda dapat mengukur durasi di antara mereka menggunakan performance.measure()
.
Menggunakan performance.measure()
performance.measure()
adalah fungsi dalam Performance API dari Node.js yang secara khusus menghitung durasi antara dua titik yang ditandai dalam timeline eksekusi aplikasi Anda. Ini pada dasarnya membuat entri pengukuran dan menyimpan waktu yang berlalu untuk pengambilan dan analisis nanti.
Ingat bahwa di bagian performance.mark()
, kita membuat dua mark: A
& B
. Di bagian ini, kita akan mengujinya dan melihat bagaimana performance.mark()
bekerja dengan performance.measure()
.
performance.measure('A to B', 'A', 'B');
const measures = performance.getEntriesByType('measure');
measures.forEach(measure => {
console.log(`${measure.name}: ${measure.duration}ms`);
});
Ini akan membuat pengukuran bernama 'A to B', yang menghitung waktu yang berlalu antara mark 'A' dan 'B'.
Ketika Anda menjalankan kode di atas, output akan menampilkan durasi antara dua mark 'A' dan 'B'. Berikut adalah contoh dari apa yang mungkin dicetak oleh konsol seperti:
A to B: 12.345ms
Output ini menunjukkan bahwa operasi antara mark 'A' dan 'B' membutuhkan waktu sekitar 12.345 milidetik untuk diselesaikan.
Menggunakan PerformanceObserver
Antarmuka PerformanceObserver
di Node.js memungkinkan pengembang untuk secara asinkron mengamati dan menangani entri kinerja seperti mark, pengukuran, dan entri waktu sumber daya. Ini sangat berguna untuk memantau dan bereaksi terhadap data kinerja saat dikumpulkan, menjadikannya alat penting untuk analisis dan optimasi kinerja waktu nyata.
Untuk menggunakan PerformanceObserver
, Anda perlu membuat instance-nya dan menentukan fungsi callback yang akan menangani entri kinerja. Berikut adalah pengaturan dasar:
const { PerformanceObserver, performance } = require('node:perf_hooks');
const observer = new PerformanceObserver((list) => {
list.getEntries().forEach((entry) => {
console.log(entry);
});
});
observer.observe({ entryTypes: ['mark', 'measure'] });
Dalam contoh ini:
- Mengimpor
PerformanceObserver
danperformance
: ObjekPerformanceObserver
danperformance
diimpor dari modulperf_hooks
. - Membuat Observer: Instance
PerformanceObserver
dibuat dengan fungsi callback. Fungsi ini dipanggil setiap kali entri kinerja baru direkam. - Mengamati Jenis Entri: Metode
observer.observe
dipanggil dengan objek yang menentukan jenis entri yang akan diamati (mark
danmeasure
dalam kasus ini).
Kasus Penggunaan Praktis untuk PerformanceObserver
1. Pemantauan Kinerja Waktu Nyata:
PerformanceObserver
memungkinkan Anda untuk terus memantau kinerja aplikasi, memberikan umpan balik langsung tentang masalah kinerja. Ini sangat berguna dalam lingkungan produksi di mana data kinerja waktu nyata sangat penting.
2. Menganalisis Pemuatan Sumber Daya:
- Dengan mengamati entri waktu sumber daya, pengembang dapat menganalisis bagaimana berbagai sumber daya (seperti skrip, stylesheet, dan gambar) dimuat, membantu mengoptimalkan waktu muat.
3. Debugging dan Profiling:
- Selama pengembangan,
PerformanceObserver
dapat digunakan untuk memprofil bagian kode tertentu, mengidentifikasi fungsi yang lambat dan potensi hambatan.
4. Metrik Kinerja Kustom:
- Pengembang dapat membuat metrik kinerja kustom dengan menandai dan mengukur titik-titik penting dalam aplikasi, memungkinkan analisis kinerja yang lebih terperinci yang disesuaikan dengan kebutuhan spesifik aplikasi.
Pengujian Aplikasi di Node.js
Sejauh ini, kita telah belajar tentang Node.js Performance API, mengapa itu penting, bagaimana cara kerjanya, dan bagaimana perbedaannya dari fungsi Date.now()
default.
Jika Anda sedang membangun aplikasi, Anda pasti ingin fokus membangun aplikasi Anda dan menyerahkan pengujian ke layanan lain. Nah, berkat Apidog, Anda dapat menguji API dan aplikasi Anda.

Apidog adalah alat yang ampuh yang dirancang khusus untuk pengujian API, termasuk pengujian kinerja. Ini menawarkan solusi komprehensif untuk membuat, mengelola, dan menguji API. Apidog memungkinkan Anda untuk mensimulasikan perilaku API, menentukan kasus pengujian, dan menghasilkan laporan terperinci. Dengan antarmuka yang intuitif, Anda dapat dengan mudah mengonfigurasi pengujian kinerja, menganalisis waktu respons, dan mengidentifikasi hambatan kinerja.

Kesimpulan
Node.js Performance API, termasuk alat seperti performance.mark()
, performance.measure()
, dan PerformanceObserver
, menyediakan pengembang dengan kemampuan yang ampuh untuk memantau dan mengoptimalkan kinerja aplikasi. Dengan memanfaatkan alat-alat ini, Anda dapat memperoleh wawasan yang tepat tentang karakteristik kinerja aplikasi Node.js Anda, mengidentifikasi hambatan, dan menerapkan optimasi yang ditargetkan untuk meningkatkan efisiensi dan pengalaman pengguna.
Di luar Performance API, menggunakan praktik API/Aplikasi terbaik, dan pengujian dan pemantauan beban yang kuat dapat secara signifikan meningkatkan kinerja keseluruhan aplikasi Anda. Upaya gabungan ini memastikan bahwa aplikasi Node.js Anda berjalan dengan lancar, skala secara efektif, dan memberikan pengalaman pengguna yang superior, sehingga mempertahankan keunggulan kompetitif di pasar.