# Research, Benchmarks & Analyses

> Measurements, analyses, ecosystem surveys and source reviews: which question I chased, how I went at it, what I found and how far I trust the result.

- records: 3
- Source: https://www.muhammetsafak.com.tr/en/research/
- Language: en-US
- Author: Muhammet Şafak

---
## All programmes

- **Language & runtime** (0) — What version upgrades, compiler and runtime settings change on the same workload: JIT, opcache, GC and memory behaviour. Release-note and RFC analysis belongs here alongside the measurements. — https://www.muhammetsafak.com.tr/en/research/program/dil-runtime/
- **Database & queries** (0) — What index strategy, query plans and connection handling cost once the data volume is real. Schema-decision and migration-order analysis belongs here alongside the measurements. — https://www.muhammetsafak.com.tr/en/research/program/veritabani/
- **Service & load** (1) — Latency distribution, saturation point and queue behaviour of a service under load — p95/p99, not the mean. Analysis of patterns like backpressure, circuit breakers and queuing belongs here alongside the measurements. — https://www.muhammetsafak.com.tr/en/research/program/servis-yuk/
- **Tooling comparison** (1) — The measurable difference between two tools doing the same job: build time, output size, memory and the developer loop. Ecosystem surveys — maintenance health, release cadence, community size — belong here alongside the measurements. — https://www.muhammetsafak.com.tr/en/research/program/arac-karsilastirma/
- **Frontend performance** (1) — Shipped JS, first paint and interaction delay: how many kilobytes a convenience costs the visitor. Browser-support and API-stability analysis belongs here alongside the measurements. — https://www.muhammetsafak.com.tr/en/research/program/arayuz-performans/
- **Cost & resources** (0) — The side of a decision that reaches the invoice: CPU hours, bandwidth, storage and true cost per request. Pricing-model analysis belongs here alongside the measurements. — https://www.muhammetsafak.com.tr/en/research/program/maliyet/

## Findings ledger

### The fixed cost of installing a PHP framework: disk size tells you nothing

- Kind: Measurement
- Question: How many megabytes on disk, how many files per request and how many milliseconds on the first request do seven PHP frameworks cost — and which of those numbers actually predicts throughput under load?
- Finding: Disk size predicts nothing: Yii2 has the largest vendor tree at 34.1 MB and loads only 62 files per request, among the fewest in the field. Files per request predicts nothing either: CodeIgniter loads 96 files and serves 6,431 req/s, Symfony loads 224 and serves 13,067. The one number that genuinely separates them is the first request served with a cold opcache: 2.2 ms for Phalcon, 72.2 ms for Laravel — thirty-three times. That is the compile bill the first visitor pays after every deploy, and it is measured in tens of milliseconds, not kilobytes.
- Measured on: 2026-08-20
- Confidence: High confidence
- Programme: arac-karsilastirma
- Raw data: https://github.com/muhammetsafak/php-framework-bench/blob/main/results/2026-08-20/static.json
- https://www.muhammetsafak.com.tr/en/research/php-framework-ayak-izi/
- Markdown: https://www.muhammetsafak.com.tr/en/research/php-framework-ayak-izi.md

### Seven PHP frameworks under identical load: the gap narrows as soon as the request does real work

- Kind: Measurement
- Question: On the same hardware, the same PHP build and the same seven routes, how many requests a second do Laravel, Symfony, CodeIgniter, Yii2, Phalcon, Laminas and Slim serve, and at what latency?
- Finding: On an empty route the fastest is 4.4× the slowest (Slim 25,975, Laravel 5,966 req/s). As soon as the request does real work the gap closes: 3.7× for a single row from the database, 3.5× for twenty rows. Phalcon is third on an empty route and fifth once a query is involved — being a C extension buys nothing while the process waits on MySQL. And the expensive decision is not the framework: Laravel's own default `web` middleware group takes the same response from 5,858 to 2,176 req/s, so one default costs more than most of the distance between the frameworks.
- Measured on: 2026-08-20
- Confidence: Medium confidence
- Programme: servis-yuk
- Raw data: https://github.com/muhammetsafak/php-framework-bench/tree/main/results/2026-08-20
- https://www.muhammetsafak.com.tr/en/research/php-framework-yuk-testi/
- Markdown: https://www.muhammetsafak.com.tr/en/research/php-framework-yuk-testi.md

### How you import Chart.js decides how many kilobytes the visitor downloads

- Kind: Measurement
- Question: In a real production build, what is the difference between `chart.js/auto` and a selective `Chart.register()` — in kilobytes?
- Finding: Selective registration saves 9.7 kB gzip over `chart.js/auto` (67.8 → 58.1 kB, 14.3%). The larger drop is not in the library core but in leaving unused controllers out: a page that registers only the bar chart falls to 46.0 kB — two thirds of auto.
- Measured on: 2026-08-19
- Confidence: High confidence
- Programme: arayuz-performans
- https://www.muhammetsafak.com.tr/en/research/chartjs-import-stratejisi/
- Markdown: https://www.muhammetsafak.com.tr/en/research/chartjs-import-stratejisi.md
