/ BENCHMARK

PHP framework'lerin benchmark'ları

Bu yazıda popüler PHP framework'lerin benchmark'larını istatistiksel olarak sundum. Hangi framework daha hızlı çalışıyormuş görelim.

Benchmark'ları rakyll'in hey isimli uygulamasını kullanarak yaptım. PHP framework'leri olarak CodeIgniter, FuelPHP, Kohana, Laravel, Lumen, Phalcon ve Yii kullandım. Her bir framework'ün debug özelliğini kapalı duruma getirdim ve environment'ini production olarak ayarladım ki çalışabilecekleri en hızlı haline getirmiş oldum. Web sunucu olarak da nginx kullandım. Her bir frameworkü "Hello world" diye tabir edebileceğimiz varsayılan halleriyle test ettim. Ancak ileride veritabanı sorgusu, session gibi kriterleri de ekleyerek benchmark'lar yapabilirim.

Benchmark'ta kullandığım komut (her scripte 2,000 sorgu gönderiyor):

hey -n 2000 http://localhost:8080/php/benchmark/<script_yolu>/index.php

Şimdi gelelim sonuçlara. Aşağıda yaptığım benchmark sonuçlarının grafiğini görebilirsiniz. Grafikte her saniye yapılabilecek sorgu sayısının ortalaması bulunuyor.

php-bench-chart-1

Laravel bu testte saniyede ortalama 94 kez çalışarak, en başarısız isim oluyor. En fazla performansı gösteren isim ise 865 sorgu ile Phalcon oluyor. Peki bu sonuç şaşırttı mı? Tabiki hayır. Phalcon'u henüz duymadıysanız tanıtayım. Kendisi bir PHP extension'ıdır. Yani C diliyle yazılmış bir PHP framework'ü de denebilir. Ancak bunu çalıştırabilmeniz için kendinize ait sunucu olması gerekiyor. Shared sunucuların büyük çoğunluğunda bu Phalcon extension'ı bulunmayabilir. Shared'da kullanacağım ve performans da arıyorum derseniz onun yerine Phalcon'dan hemen sonra gelen CodeIgniter'ı kullanabilirsiniz.

Peki, performans önemli midir? Bu göreceli bir kavramdır. Eğer projeniz bir startup ise, performanstan çok projenizi en hızlı şekilde geliştirmenizi sağlayacak framework'ü kullanın. Benchmark'taki sayılar yalnızca bilgi verme amaçlıdır. Eğer yeterli bir bilginiz var ise (cache kullanımı, kullanacağınız yazılımların performansı ve daha az kaynak kullanımı için yapacağınız düzenlemeler gibi), uygulamanızın performansını arttırabilmeniz mümkündür.

Test sonuçları sunucuların özelliklerine göre değişiklik gösterebilir. İleride Python, Ruby ve Go dilleriyle yazılmış framework'lerin benchmark'larını görebilirsiniz.