Cycle 2.16.0
cycle/database · mean 27.5 ms · 150 samples
- sqlite-memory 27.5 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.
cycle/database · mean 27.5 ms · 150 samples
atlas/pdo · mean 36.9 ms · 150 samples
phpfui/orm · mean 53.0 ms · 150 samples
phpfui/orm · mean 59.8 ms · 150 samples
propel/propel · mean 81.5 ms · 150 samples
php-patterns/activerecord · mean 101 ms · 150 samples
divergence/divergence · mean 114 ms · 294 samples
doctrine/orm · mean 129 ms · 150 samples
yiisoft/yii2 · mean 141 ms · 150 samples
gabordemooij/redbean · mean 145 ms · 150 samples
cakephp/cakephp · mean 265 ms · 150 samples
cakephp/cakephp · mean 265 ms · 150 samples
illuminate/database · mean 321 ms · 150 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 |