Node.js, uygulamalarınızın performansını ölçmek ve optimize etmek için güçlü araçlar sağlar. Bu araçlardan biri, geliştiricilerin yüksek çözünürlüklü zaman damgaları ve çeşitli performans ölçümlerini yakalamasına olanak tanıyan Performance API'sidir. Bu kılavuz, Node.js Performance API'sinin temel bileşenlerini ve bunları etkili bir şekilde nasıl kullanacağınızı tanıtacaktır.
Node.js'de Performans Neden Önemlidir?
Node.js, I/O'ya bağlı görevler için mükemmel bir şekilde uygun, olay güdümlü, eşzamansız mimarisiyle parlar. Ancak, bu engellemeyen ortamda bile, performans her şeyden önemlidir. Yavaş uygulamalar, kullanıcıların hayal kırıklığına yol açar ve ölçeklenebilirliği engeller. Darboğazları belirlemek ve kodu optimize etmek, kusursuz bir kullanıcı deneyimi için elzem hale gelir.
API yanıt sürenizi artırmakla mı ilgileniyorsunuz? Aşağıdaki makale, API yanıt sürenizi nasıl artıracağınıza dair adım adım bir rehber sunmaktadır.

Neden Node.js Performance API'sini Kullanmalısınız?
- Performans Darboğazlarını Belirleyin: Performans darboğazları, kullanıcı deneyimini önemli ölçüde bozabilir. Performance API'sini kullanan geliştiriciler, işlev yürütme, kaynak yükleme veya HTTP istek işleme gibi gecikmelerin meydana geldiği tam anları tespit edebilirler. Bu hassasiyet, hedeflenmiş optimizasyonları sağlar.
- Kaynak Kullanımını Optimize Edin: Performansı izlemek, CPU ve bellek gibi kaynakların nasıl kullanıldığını anlamaya yardımcı olur. Verimsiz kaynak kullanımını belirleyerek, geliştiriciler kodlarını daha verimli hale getirmek için optimize edebilir, maliyetleri düşürebilir ve ölçeklenebilirliği artırabilir.
- Kullanıcı Deneyimini İyileştirin: Hızlı yanıt veren uygulamalar daha iyi bir kullanıcı deneyimi sağlar. Performance API, İlk Bayta Kadar Geçen Süre (TTFB) ve İlk İçerik Dolu Boyama (FCP) gibi temel ölçümleri ölçmeye yardımcı olur ve geliştiricilerin daha hızlı yükleme sürelerine ve daha sorunsuz etkileşimlere yol açan iyileştirmeler yapmasını sağlar.
- Uygulama Kararlılığını İyileştirin: Sürekli performans izleme, anormallikleri ve potansiyel sorunları kritik hale gelmeden önce tespit etmeye yardımcı olur. Bu proaktif yaklaşım, uygulamanın daha yüksek çalışma süresi ve güvenilirliğini sağlar.
Node.js Performance API'sine Giriş
perf_hooks
modülü aracılığıyla erişilebilen Performance API, Node.js geliştiricilerini uygulama performansını ölçmek ve analiz etmek için kapsamlı bir araç setiyle donatır. Date.now()
gibi geleneksel yöntemlere göre önemli bir avantaj sunarak, yüksek çözünürlüklü zamanlama ve performansı değerlendirmeye daha yapılandırılmış bir yaklaşım sağlar. Date.now()
yönteminde şuna benzer bir şey göreceksiniz;
const startTime = Date.now();
// call a function to perform a task()
console.log(`Task duration: ${Date.now() - startTime} milliseconds`);
Date.now() işlevi iyi çalışır, ancak görünüşte basit olmasına rağmen, bu yöntem güvenilmez olabilir çünkü sistem saati değişiklikleri ölçümleri bozabilir.
İşte Node.js Performance API'sinin devreye girdiği yer burasıdır. Uygulama zaman kullanımımızı tam olarak ölçebilmek ve sistem saati gibi şeylerle uğraşmak istemiyoruz, değil mi?
Node.js Performance API'si, perf_hooks
modülü tarafından sağlanan birkaç temel yöntem ve sınıf etrafında oluşturulmuştur. Bunlar şunları içerir:
Bu araçların her biri, performans ölçümlerini yakalamak ve analiz etmek için farklı bir amaca hizmet eder.
performance.now() Kullanımı
performance.now()
yöntemi milisaniye cinsinden yüksek çözünürlüklü bir zaman damgası döndürür. Bu, uygulamanız içindeki aralıkları Date.now()
'dan daha yüksek bir hassasiyetle ölçmek için kullanışlıdır.
Bir görevin süresini elde etmek için, ölçmek istediğiniz işlemin başlangıcına ve sonuna performance.now() yöntemini aşağıdaki gibi ekleyin;
const { performance } = require('node:perf_hooks');
const start = performance.now();
// Perform some operations
const end = performance.now();
console.log(`Time taken: ${end - start} ms`);
Her şeyden önce, performansı node modüllerinden içe aktarıyoruz ve ardından doğru işlemin zamanını elde etmek için başlangıç ve bitiş sabitleri oluşturup performance.now yöntemlerini onlara atıyoruz.
Yukarıdaki kodun çıktısı aşağıdaki gibi görünmelidir;
Time taken: 1253.**** ms.
performance.mark() Kullanımı
Node.js'deki performance.mark()
yöntemi, kodunuzdaki belirli noktalarda adlandırılmış zaman damgaları (veya işaretler) oluşturmanıza olanak tanır. Bu işaretler, uygulamanızın farklı bölümleri arasında geçen süreyi ölçmenize yardımcı olarak, performans darboğazları hakkında bilgi verir.
const { performance } = require('node:perf_hooks');
performance.mark('A');
// Some operations
performance.mark('B');
Bu örnekte, performance.mark('A') ve performance.mark('B') sırasıyla 'A' ve 'B' etiketli iki işaret oluşturur.
İşaretler ayrıca, hata ayıklama veya daha fazla analiz için yararlı olabilecek ek ayrıntılar da içerebilir.performance.mark('A', { detail: 'Start of operation' }); performance.mark('B', { detail: 'End of operation' });
Burada, detail
özelliği, her bir işaretin neyi temsil ettiğine dair ek bilgiler sağlar.
İşaretler oluşturduktan sonra, performance.measure()
kullanarak bunlar arasındaki süreyi ölçebilirsiniz.
performance.measure() Kullanımı
performance.measure()
, Node.js'nin Performance API'sinde, uygulamanızın yürütme zaman çizelgesinde işaretlenmiş iki nokta arasındaki süreyi özel olarak hesaplayan bir işlevdir. Esasen bir ölçüm girdisi oluşturur ve daha sonra alınması ve analiz edilmesi için geçen süreyi depolar.
performance.mark()
bölümünde, iki işaret oluşturduğumuzu hatırlayın: A
& B
. Bu bölümde, bunları test edeceğiz ve performance.mark()
'ın performance.measure()
ile nasıl çalıştığını göreceğiz.
performance.measure('A to B', 'A', 'B');
const measures = performance.getEntriesByType('measure');
measures.forEach(measure => {
console.log(`${measure.name}: ${measure.duration}ms`);
});
Bu, 'A to B' adlı bir ölçüm oluşturacak ve 'A' ve 'B' işaretleri arasında geçen süreyi hesaplayacaktır.
Yukarıdaki kodu çalıştırdığınızda, çıktı 'A' ve 'B' işaretleri arasındaki süreyi gösterecektir. İşte konsolun şuna benzer bir şey yazdırabileceği bir örnek:
A to B: 12.345ms
Bu çıktı, 'A' ve 'B' işaretleri arasındaki işlemlerin tamamlanmasının yaklaşık 12.345 milisaniye sürdüğünü gösterir.
PerformanceObserver Kullanımı
Node.js'deki PerformanceObserver
arayüzü, geliştiricilerin işaretler, ölçümler ve kaynak zamanlama girdileri gibi performans girdilerini eşzamansız olarak gözlemlemesine ve işlemesine olanak tanır. Performans verilerini toplandığı anda izlemek ve bunlara tepki vermek için özellikle kullanışlıdır ve bu da onu gerçek zamanlı performans analizi ve optimizasyonu için temel bir araç haline getirir.
PerformanceObserver
'ı kullanmak için, bunun bir örneğini oluşturmanız ve performans girdilerini işleyecek bir geri çağırma işlevi tanımlamanız gerekir. İşte temel bir kurulum:
const { PerformanceObserver, performance } = require('node:perf_hooks');
const observer = new PerformanceObserver((list) => {
list.getEntries().forEach((entry) => {
console.log(entry);
});
});
observer.observe({ entryTypes: ['mark', 'measure'] });
Bu örnekte:
PerformanceObserver
veperformance
'ın İçe Aktarılması:PerformanceObserver
veperformance
nesneleri,perf_hooks
modülünden içe aktarılır.- Bir Gözlemci Oluşturma: Bir geri çağırma işleviyle birlikte bir
PerformanceObserver
örneği oluşturulur. Bu işlev, yeni performans girdileri kaydedildiğinde çağrılır. - Girdi Türlerini Gözlemleme:
observer.observe
yöntemi, gözlemlenecek girdi türlerini (bu durumdamark
vemeasure
) belirten bir nesneyle çağrılır.
PerformanceObserver için Pratik Kullanım Durumları
1. Gerçek Zamanlı Performans İzleme:
PerformanceObserver
, uygulama performansını sürekli olarak izlemenize olanak tanır ve performans sorunları hakkında anında geri bildirim sağlar. Bu, gerçek zamanlı performans verilerinin kritik olduğu üretim ortamlarında özellikle kullanışlıdır.
2. Kaynak Yüklemesini Analiz Etme:
- Geliştiriciler, kaynak zamanlama girdilerini gözlemleyerek, çeşitli kaynakların (komut dosyaları, stil sayfaları ve resimler gibi) nasıl yüklendiğini analiz edebilir ve yükleme sürelerini optimize etmeye yardımcı olabilir.
3. Hata Ayıklama ve Profil Çıkarma:
- Geliştirme sırasında,
PerformanceObserver
, yavaş işlevleri ve potansiyel darboğazları belirleyerek, kodun belirli bölümlerinin profilini çıkarmak için kullanılabilir.
4. Özel Performans Ölçümleri:
- Geliştiriciler, uygulamaya özgü ihtiyaçlara göre uyarlanmış daha ayrıntılı performans analizi sağlayarak, uygulamadaki önemli noktaları işaretleyip ölçerek özel performans ölçümleri oluşturabilirler.
Node.js'de Uygulama Testi
Şimdiye kadar, Node.js Performance API'sini, neden önemli olduğunu, nasıl çalıştığını ve varsayılan Date.now()
işlevinden nasıl farklılaştığını öğrendik.
Ancak, bir uygulama oluşturuyorsanız, uygulamanızı oluşturmaya odaklanmak ve testi diğer hizmetlere bırakmak isteyeceksiniz. Neyse ki, Apidog sayesinde, API'lerinizi ve uygulamalarınızı test edebilirsiniz.

Apidog, performans testi dahil olmak üzere API testleri için özel olarak tasarlanmış güçlü bir araçtır. API'leri oluşturmak, yönetmek ve test etmek için kapsamlı çözümler sunar. Apidog, API davranışlarını simüle etmenize, test senaryoları tanımlamanıza ve ayrıntılı raporlar oluşturmanıza olanak tanır. Sezgisel arayüzü sayesinde, performans testlerini kolayca yapılandırabilir, yanıt sürelerini analiz edebilir ve performans darboğazlarını belirleyebilirsiniz.

Sonuç
performance.mark()
, performance.measure()
ve PerformanceObserver
gibi araçları içeren Node.js Performance API'si, geliştiricilere uygulama performansını izlemek ve optimize etmek için güçlü yetenekler sağlar. Bu araçlardan yararlanarak, Node.js uygulamalarınızın performans özelliklerine ilişkin kesin bilgiler edinebilir, darboğazları belirleyebilir ve verimliliği ve kullanıcı deneyimini artırmak için hedeflenmiş optimizasyonlar uygulayabilirsiniz.
Performance API'sinin ötesinde, en iyi API/Uygulama uygulamalarını kullanmak ve sağlam yük testi ve izleme, uygulamalarınızın genel performansını önemli ölçüde artırabilir. Bu birleşik çabalar, Node.js uygulamalarınızın sorunsuz çalışmasını, etkili bir şekilde ölçeklenmesini ve üstün bir kullanıcı deneyimi sağlamasını sağlayarak, pazarda rekabet avantajını korur.