İçeriğe geç
Muhammet Şafak
en

Yedi PHP framework'ü, dört ölçüm

Soğuk istek, yük testi, OPcache preload ve Laravel preload eğrisi: yedi PHP framework'ünün ölçülen maliyeti tek sayfada.

4,4×

Boş rota, istek/sn

en hızlı ile en yavaş arasındaki fark

Slim 25.975, Laravel 5.966 istek/sn. Veritabanı devreye girince fark 3,7 kata iner.

Ayak izi

İstek başına yüklenen dosya

dosya

  • Phalcon7
  • Yii262
  • Slim79
  • CodeIgniter96
  • Symfony224
  • Laminas269
  • Laravel359
Kaynak: PHP framework ayak izi ölçümü

Ayak izi

Soğuk ilk istek

ms

  • Phalcon2,2
  • Slim7,9
  • Yii217,4
  • CodeIgniter22,2
  • Laminas27,7
  • Symfony35,7
  • Laravel72,2
Kaynak: PHP framework ayak izi ölçümü

Yük testi

Boş rotada throughput

istek/sn

  • Slim25.975
  • Yii219.834
  • Phalcon15.021
  • Symfony13.067
  • Laminas8.349
  • CodeIgniter6.431
  • Laravel5.966
PHP 8.4.24, JIT kapalı, nginx + php-fpm 8 worker, 64 bağlantı, 15 sn. Docker Desktop, Apple M4 Pro.

Yük testi

Senaryoya göre istek/sn

Yedi framework'ün boş rota, şablon, tek satır ve 20 satır veritabanı senaryolarındaki istek/sn değerleri
FrameworkBoş rotaŞablonDB tek satırDB 20 satır
Slim25.97522.78014.4434.551
Yii219.83416.9959.3663.245
Phalcon15.02110.5635.2222.040
Symfony13.0679.3556.9723.060
Laminas8.3497.4195.4212.874
CodeIgniter6.4315.5574.5272.494
Laravel5.9665.2903.8871.293

Yük testi

İş eklendikçe fark daralıyor

  • 3,7×DB tek satırda farkBoş rotada 4,4×, 20 satırda 3,5×
  • 1,3×Phalcon / LaravelBoş rotada 2,5× iken DB tek satırda
  • %0-7Rota maliyetiBoş rotaya göre kayıp
  • %1-8Middleware maliyetiBeş katmanlı zincir eklenince

Yük testi

JSON yanıtında gecikme

Yedi framework'ün JSON senaryosundaki p50, p95 ve p99 gecikmeleri, milisaniye
Frameworkp50p95p99
Slim0,25 ms0,43 ms0,53 ms
Yii20,35 ms0,59 ms0,73 ms
Phalcon0,46 ms0,73 ms0,94 ms
Symfony0,58 ms0,89 ms0,96 ms
Laminas0,88 ms1,52 ms2,23 ms
CodeIgniter1,16 ms1,84 ms1,98 ms
Laravel0,75 ms1,97 ms2,59 ms

−%63

Laravel

varsayılan web grubunun götürdüğü throughput

Framework seçimi 4 kata kadar fark açabilir, ama tek bir varsayılan middleware grubu %63 götürebiliyor.

Laravel

Web grubu açık ve kapalı

Laravel rotasının middleware grubu olmadan ve varsayılan web grubuyla istek/sn, p50 ve p99 değerleri
Rotaİstek/snp50p99
Grup yok5.8581,32 ms2,88 ms
Varsayılan web grubu2.1761,73 ms71,89 ms

OPcache preload

Soğuk istek: preload öncesi ve sonrası

Yedi framework'te preload olmadan ve en iyi preload ile soğuk istek süresi, kazanç ve php-fpm hazır olma bedeli
FrameworkPreload yokEn iyi preloadKazançfpm bedeli
Laravel76,31 ms13,98 ms5,5×+2.340 ms
Symfony35,58 ms2,50 ms14,2×−40 ms
Laminas26,70 ms3,81 ms7,0×−7 ms
CodeIgniter20,75 ms3,13 ms6,6×−12 ms
Yii216,98 ms4,80 ms3,5×+13 ms
Slim7,46 ms1,86 ms4,0×+28 ms
Phalcon2,68 ms1,99 ms1,3×+43 ms

OPcache preload

Preload bir ayar değil, bir bakım işi

  • 2/7Resmî preload dosyasıYalnız Symfony ve CodeIgniter'da
  • 14,2×Symfony'nin kazancı35,58 ms'den 2,50 ms'ye
  • 2,3 snLaravel'in deploy bedeliZiyaretçi başına 62 ms kazanç karşılığı
  • 1,3×PhalconNegatif kontrol: 3 dosya

Laravel preload eğrisi

Preload edilen dosya arttıkça soğuk istek

soğuk istek, ms

Preload edilen dosya arttıkça soğuk istek (soğuk istek, ms): 0 dosya: 68,37, 1.592 dosya: 38,01, 2.686 dosya: 28,48, 2.809 dosya: 12,77, 4.721 dosya: 10,96.

Medyan değerler; filtreler bu uygulamaya özgüdür.

Laravel preload eğrisi

Tatlı nokta 2.809 dosyada

  • 12,77 msTatlı noktada soğuk istekPreload'suz 68,37 ms'ye göre −%81
  • +1.132 msfpm hazır olma bedeli382 ms'den 1.514 ms'ye
  • 15,7 msKritik 123 dosyanın kazancı1.912 dosyadan sekiz kat fazla kazandırıyor
  • 1,8 msSon 1.912 dosyanın kazancıKazanılan ms başına 654 ms bedel

Okurken

Bu sayıların sınırları

  • OrtamYük testi Docker Desktop VM'inde koştu; mutlak değerler bare-metal'i temsil etmez, hızlı adaylar olsa olsa eksik raporlanır.
  • KapsamJIT kapalıydı, worker mode ölçülmedi. Slim'in kendi veri katmanı ve şablon motoru yok.
  • SoğukSoğuk, OPcache'in boş olması demek. Tek atış medyandan sapar: Symfony tek atışta 76,5 ms, medyanı 35,58 ms.
  • Tutarlılık546 yük ölçümünde sıfır non-200 yanıt; 150 örneklemede en kötü değer en iyinin %84'ü.

Paylaş ve indir

Sitede Ara

Yazı, proje ve sayfalarda arama yapmak için yazmaya başlayın.

Escile kapatPagefind ile güçlendirildi