Doctrine 3.6.2
doctrine/orm · mean 514 ms · 600 samples
- sqlite-memory 129 ms
- sqlite-file 130 ms
- mariadb 802 ms
- postgresql 993 ms
Mean time per scenario run with warmup runs excluded, sorted by runtime. Each framework does different work, so read these next to the features you need from an ORM.
doctrine/orm · mean 514 ms · 600 samples
phpfui/orm · mean 635 ms · 600 samples
cakephp/cakephp · mean 898 ms · 600 samples
cakephp/cakephp · mean 906 ms · 600 samples
cycle/database · mean 983 ms · 600 samples
php-patterns/activerecord · mean 1,049 ms · 450 samples
atlas/pdo · mean 1,095 ms · 600 samples
divergence/divergence · mean 1,127 ms · 150 samples
propel/propel · mean 1,156 ms · 600 samples
phpfui/orm · mean 1,201 ms · 600 samples
divergence/divergence · mean 1,368 ms · 744 samples
yiisoft/yii2 · mean 1,382 ms · 600 samples
illuminate/database · mean 1,851 ms · 600 samples
gabordemooij/redbean · mean 1,904 ms · 600 samples
Mean across every framework measured on each engine.
Mean across every framework and engine for each row shape.
Every framework runs the same scenarios. The row shape and the operation mix decide where each one spends its time.
Shows framework overhead with very little field-mapping noise, so identity-map, query builder, and per-record object cost dominate.
Wide records amplify hydration, casting, dirty-checking, and serialization overhead. Frameworks with expensive attribute normalization usually spread out here.
A near-floor for typed persistence. If an ORM is still slow here, the cost is usually framework machinery rather than payload complexity.
Decimal and floating-point mapping can trigger extra normalization work, especially on update verification and dirty-state comparison.
Fixed-length text stresses text field assignment without the variability of large blobs, so column-count and hydration strategy matter more than payload churn.
This is the closest to a real CRUD app payload. Variable strings and notes fields widen the gap between lightweight row mappers and heavier active-record layers.
Imported uploads from signed runners. Open a run for its machine and per-engine detail.
| Run | Host | Status | Samples | Runtime | Started |
|---|---|---|---|---|---|
| 20260928011232-b9eaed5b | kaijuPHP 8.5.11 | complete | 7,488of 8,320 runs | 2h 29m 1savg 1,194 ms | |
| 20260831062427-083dfb94 | eimuPHP 8.5.3 | complete | 144of 160 runs | 12.384savg 86.0 ms | |
| 20260329203643-74505162 | eimuPHP 8.5.3 | complete | 312of 312 runs | 39.501savg 127 ms |
| ID | Status | Runner | Runtime | File |
|---|---|---|---|---|
| #3 | processed | kaiju | 2h 29m 1savg 1,194 ms | results-20260928011232-b9eaed5b-default-20260928-011232.csv received |
| #2 | processed | eimu | 12.384savg 86.0 ms | results-20260831062427-083dfb94-v3-3-0-staged-sqlite-memory-20260831-062427.csv received |
| #1 | processed | runner-20260329222123 | 39.501savg 127 ms | results-20260329203643-74505162-default-20260329-203643.csv received |