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
Ayak izi
Soğuk ilk istek
ms
- Phalcon2,2
- Slim7,9
- Yii217,4
- CodeIgniter22,2
- Laminas27,7
- Symfony35,7
- Laravel72,2
Yük testi
Boş rotada throughput
istek/sn
- Slim25.975
- Yii219.834
- Phalcon15.021
- Symfony13.067
- Laminas8.349
- CodeIgniter6.431
- Laravel5.966
Yük testi
Senaryoya göre istek/sn
| Framework | Boş rota | Şablon | DB tek satır | DB 20 satır |
|---|---|---|---|---|
| Slim | 25.975 | 22.780 | 14.443 | 4.551 |
| Yii2 | 19.834 | 16.995 | 9.366 | 3.245 |
| Phalcon | 15.021 | 10.563 | 5.222 | 2.040 |
| Symfony | 13.067 | 9.355 | 6.972 | 3.060 |
| Laminas | 8.349 | 7.419 | 5.421 | 2.874 |
| CodeIgniter | 6.431 | 5.557 | 4.527 | 2.494 |
| Laravel | 5.966 | 5.290 | 3.887 | 1.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
| Framework | p50 | p95 | p99 |
|---|---|---|---|
| Slim | 0,25 ms | 0,43 ms | 0,53 ms |
| Yii2 | 0,35 ms | 0,59 ms | 0,73 ms |
| Phalcon | 0,46 ms | 0,73 ms | 0,94 ms |
| Symfony | 0,58 ms | 0,89 ms | 0,96 ms |
| Laminas | 0,88 ms | 1,52 ms | 2,23 ms |
| CodeIgniter | 1,16 ms | 1,84 ms | 1,98 ms |
| Laravel | 0,75 ms | 1,97 ms | 2,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ı
| Rota | İstek/sn | p50 | p99 |
|---|---|---|---|
| Grup yok | 5.858 | 1,32 ms | 2,88 ms |
| Varsayılan web grubu | 2.176 | 1,73 ms | 71,89 ms |
OPcache preload
Soğuk istek: preload öncesi ve sonrası
| Framework | Preload yok | En iyi preload | Kazanç | fpm bedeli |
|---|---|---|---|---|
| Laravel | 76,31 ms | 13,98 ms | 5,5× | +2.340 ms |
| Symfony | 35,58 ms | 2,50 ms | 14,2× | −40 ms |
| Laminas | 26,70 ms | 3,81 ms | 7,0× | −7 ms |
| CodeIgniter | 20,75 ms | 3,13 ms | 6,6× | −12 ms |
| Yii2 | 16,98 ms | 4,80 ms | 3,5× | +13 ms |
| Slim | 7,46 ms | 1,86 ms | 4,0× | +28 ms |
| Phalcon | 2,68 ms | 1,99 ms | 1,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
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'ü.