Node.js vs PHP: Hangisi Daha İyi Bir Performans Sunuyor?

1 ay önce önce ogz tarafından "Node.js vs PHP: Hangisi Daha İyi Bir Performans Sunuyor?" sorusuna cevap yazılmış.

Node.js ve PHP, web sitesi içeriği ve işlevselliği geliştirmek için en popüler sunucu tarafı platformlardan ikisidir.

Bu platformların her birinin avantajları ve dezavantajları olsa da, en çok rekabet ettikleri alanlardan biri performanstır.

Bugün, Node.js ile PHP'nin performans açısından detaylı karşılaştırmasını ve göz önünde bulundurmanız gereken diğer bazı özellikleri göstereceğiz.

Node.js Nedir?

Node.js, ilk kez 2009 yılında açık kaynaklı bir platform olarak tanıtılan bir JavaScript çalışma ortamıdır. Node.js'nin amacı, web içeriğine erişmeye çalışan ziyaretçiler için Javascript kodunu bir tarayıcıda çalıştırmaya zorlamak yerine, bir web sunucusunda Javascript kodunu çalıştırır.

Yerleşik bir kütüphane sayesinde, Node.js Javascript kodunu yorumlamak ve çalıştırmak için ek bir sunucu gerektirmez.

PHP Nedir?

'PHP: Hypertext Processor' anlamına gelen PHP, kendi başına bir betik dilidir. PHP kodu HTML'ye gömülebilir veya Apache ve Nginx web sunucuları tarafından işlenebilir. Bu ve 25 yıllık uzun geçmişi nedeniyle PHP, web sunucularının %80'inden fazlasında kullanılıyor.

Node.js vs PHP: Performans Karşılaştırması?

Node.js ve PHP, nasıl çalıştıkları konusunda temel farklılıklara sahiptir. Bu, web sitesi içeriğini yüklemek için performanslarında bir fark olacağı anlamına gelir. İki platformu karşılaştırmak için üç karşılaştırmalı hız testi vurgulanacak.

Kod Derleme

Kod derleme konusunda, Node.js PHP'ye göre küçük bir avantaja sahiptir. Bunun nedeni, PHP'nin bir yorumlanmış derleme stratejisi kullanmasıdır; bu, bir kod bloğunu derlemek ve çalıştırmak için ayrı bir işlemeye dayandığı anlamına gelir. Çoğu web sunucusunda, PHP bir Zend çalışma zamanı ortamı kullanılarak çalıştırılır ve ayrıştırılır.

Node.js ise aksine, Just-in-Time derlemesi kullanarak kendi başına çalışır. Bunun anlamı, Node.js, işleri yavaşlatan herhangi bir harici yorum yapmadan bir ziyaretçinin tarayıcısında bir Javascript kodu bloğu derlemek ve çalıştırmak için gereken tüm parçaları sağlar.

Bununla birlikte, HHVM sanal makinesi, özellikle PHP için bir çalışma zamanı ortamı sağlayarak PHP'nin derleme hızını önemli ölçüde artırabilir. Node.js gibi, HHVM normalde PHP kodunu çalıştırmak için kullanılan daha yavaş, yorumlanmış derleme yerine Tam Zamanlı derleme kullanarak çalışır.

Çoklu Görev

Node.js'nin PHP'ye göre en büyük avantajlarından biri, bir web sunucusuna aynı anda birden fazla istekte bulunmaksıdır. Node.js, tek bir CPU iş parçacığında engelleyici olmayan bir olay döngüsü kullanır; bu, istemci isteklerinin sayısı arttıkça, hesaplama kaynaklarının tükenmesi olmadan Javascript kodunu çalıştırmasını sağlar.

Diğer yandan PHP, sunucuya birden fazla istemci talebi yapıldığında birden fazla CPU iş parçacığı gerektiren bir engelleme işlemi kullanır. Sonuç olarak, sunucuya birçok eşzamanlı istek yapıldığında, sunucunun tamamı PHP kodunun yorumlanmasıyla ilgili olarak CPU sınırlandırılabilir. Bu olduğunda, tüm istekleri tamamlama zamanı artabilir.

Performans arttırıcı PHP uzantılarıyla Apache veya Nginx web sunucularını çalıştırırken PHP'nin çoklu görev yetenekleri için bazı öznitelikler vardır. Bununla birlikte, bunlar mevcut bilgisayar gücünü daha iyi dağıtmak için işleri hızlandırmak ve yeniden yönlendirmekle sınırlıdır. Sonuçta, Apache ve Nginx hala PHP'nin eşzamanlı görevlerle başa çıkma yeteneğini temelde geliştirmiyor.

Karşılaştırma 1: Temel HTTP İsteği

Node.js veya PHP kullanarak basit bir 'Merhaba Dünya' HTTP isteği yaparken, Node.js'nin hız avantajları açıktır. PHP bir HHVM sanal ortamında çalıştırıldığında, standart bir Zend çalışma zamanı ortamına kıyasla PHP oluşturma işlemini yaklaşık %74 hızlandırır. Ancak, bu hız artışında bile, PHP uygulaması hala Node.js'den yaklaşık %17 daha yavaştır.

Benchmark 2: Bir Kabarcık Sıralamasını (Bubble Sort) Çalıştırma

Kabarcık sıralama, Javascript ve PHP'nin çoklu görev özelliklerinin gerçekten ortaya çıkmasının beklendiği CPU için yoğun bir işlemdir. Beklendiği gibi , PHP'nin kabarcık sıralama görevindeki performansı, görevin karmaşıklığı arttıkça yavaş yavaş azalmaktadır.

Bu, özellikle kabarcık dizilimi için gerekli olan iş parçacıklarının sayısı web sunucusunda mevcut iş parçacıklarının sayısını aşmaya başladığından fark edilir.

Bir HHVM çalışma zamanı ortamı içinde çalışırken, PHP hızındaki düşüş belirgin bir şekilde daha azdır.

Bu durumda, PHP ve Node.js, web sunucusu 1.000 işlemle görevlendirilene kadar benzer şekilde çalışır. 10.000 eşzamanlı işleme rağmen, Node.js kabaca PHP ve HHVM'den iki kat daha hızlı çalışır.

Benchmark 3: CombSort Sıralama

CombSort sıralama, kabarcık sıralamaya benzer bir sayısal sıralama testidir, ancak RAM kullanımının verimliliğini daha doğrudan ölçer. Bu kıyaslama testinde, standart bir Zend çalışma zamanı ortamında çalışan PHP , Node.js'den 35 kat daha yavaştı. PHP bir HHVM çalışma zamanı ortamında çalıştırılsa bile, Node.js sıralama görevinde beş kat daha hızlı oldu.

Node.js PHP'yi Çok İyi Şekilde Sunuyor

Node.js'e karşı PHP performansı söz konusu olduğunda, Node.js'nin üstün olduğuna dair çok az belirti var. Node.js, PHP'nin yüksek performanslı HHVM çalışma zamanı ortamında test edilmesine rağmen kıyaslama testlerinin üçünde de PHP'den daha iyi performans gösterdi.

Bu, web sunucunuzda kod yürütmek ve ziyaretçilere içerik sunmak söz konusu olduğunda, Node.js neredeyse her zaman daha hızlı olacağı anlamına geliyor.

Daha da önemlisi, Node.js ile PHP arasındaki fark, web sunucusuna aynı anda birden fazla istek yapıldığında özellikle fark edildi. Paylaşılan barındırma sunucuları veya yüksek miktarda web trafiği gören sunucular için, çoklu görev performansındaki bu fark, içeriği verimli bir şekilde sunmak ve çökmüş bir sunucu arasındaki fark olabilir.

Bununla birlikte, Node.js ile PHP arasında seçim yaparken göz önünde bulundurulması gereken performanstan başka hususlar olduğu söyleniyor. PHP hala çok daha yaygın şekilde kullanılmaktadır ve çok daha gelişmiş bir geliştirici topluluğuna sahiptir, bu yüzden yakında veya herhangi bir zamanda sonlanması muhtemel değildir. Bununla birlikte, daha fazla geliştirici yüksek performansından yararlanmak için Node.js'e kaydıkça, bunun önemi artacak gibi görünüyor.

0

vote

Cevap Yaz

Soruya cevap yazabilmek için üye girişi yapın yada üye olun.