- Started
- Generated
- Measured samples
- 7,488
- Combinations
- 52
Machine
Captured from the runner's system manifest.
Host
kaiju
Linux · kernel 6.19.8-200.nobara.fc43.x86_64
PHP
8.5.11
Processor
Intel(R) Xeon(R) CPU E5-2687W v4 @ 3.00GHz
48 cores · x86_64
Memory
251.7 GB
P1_DIMMA1 32 GB 2133 MT/s DDR4 M386A4G40DM0-CPB
P1_DIMMB1 32 GB 2133 MT/s DDR4 M386A4G40DM0-CPB
P1_DIMMC1 32 GB 2133 MT/s DDR4 M386A4G40DM0-CPB
P1_DIMMD1 32 GB 2133 MT/s DDR4 M386A4G40DM0-CPB
P2_DIMME1 32 GB 2133 MT/s DDR4 M386A4G40DM0-CPB
P2_DIMMF1 32 GB 2133 MT/s DDR4 M386A4G40DM0-CPB
P2_DIMMG1 32 GB 2133 MT/s DDR4 M386A4G40DM0-CPB
P2_DIMMH1 32 GB 2133 MT/s DDR4 M386A4G40DM0-CPB
Disk
447.1 GB
Device: /dev/sda
Capacity: 447.1 GB
Runtime envelope
End-to-end time per scenario run across all non-warmup samples.
- Min sample
- 3.47 ms
- Mean sample
- 1,194 ms
- Max sample
- 12,646 ms
- Cumulative time
- 2h 29m 1s
- Throughput
- 0.838/s
Runtime comparison
Mean time per scenario run in this upload, warmup runs excluded, sorted by runtime.
Init
Insert
Read
Update
Delete
- Cycle 2.16.0 sqlite-memory 27.7 ms
- Atlas 2.0.1 sqlite-memory 38.0 ms
- PHPFUIBatch 3.0.3 sqlite-memory 54.2 ms
- PHPFUI 3.0.3 sqlite-memory 61.4 ms
- Propel2 6cb272b6 sqlite-memory 83.0 ms
- ActiveRecord 2.0.6 sqlite-memory 103 ms
- Doctrine 3.6.2 sqlite-memory 130 ms
- Doctrine 3.6.2 sqlite-file 132 ms
- Yii 2.0.54 sqlite-memory 144 ms
- DivergenceV3 3.2.0 sqlite-memory 145 ms
- RedBean 5.7.5 sqlite-memory 149 ms
- Cake 5.3.3 sqlite-memory 270 ms
- CakeCached 5.3.3 sqlite-memory 271 ms
- Cake 5.3.3 sqlite-file 315 ms
- CakeCached 5.3.3 sqlite-file 317 ms
- Eloquent 13.2.0 sqlite-memory 326 ms
- PHPFUIBatch 3.0.3 mariadb 627 ms
- Doctrine 3.6.2 mariadb 829 ms
- Cycle 2.16.0 postgresql 878 ms
- Cycle 2.16.0 mariadb 936 ms
- Atlas 2.0.1 mariadb 941 ms
- PHPFUIBatch 3.0.3 sqlite-file 958 ms
- PHPFUIBatch 3.0.3 postgresql 992 ms
- Doctrine 3.6.2 postgresql 1,029 ms
- PHPFUI 3.0.3 mariadb 1,050 ms
- Propel2 6cb272b6 mariadb 1,091 ms
- CakeCached 5.3.3 mariadb 1,168 ms
- DivergenceV2 2.1.4 mariadb 1,170 ms
- Cake 5.3.3 mariadb 1,187 ms
- DivergenceV3 3.2.0 mariadb 1,307 ms
- Propel2 6cb272b6 postgresql 1,308 ms
- Yii 2.0.54 mariadb 1,336 ms
- Atlas 2.0.1 postgresql 1,337 ms
- ActiveRecord 2.0.6 postgresql 1,487 ms
- PHPFUI 3.0.3 postgresql 1,561 ms
- ActiveRecord 2.0.6 sqlite-file 1,676 ms
- RedBean 5.7.5 mariadb 1,686 ms
- Yii 2.0.54 postgresql 1,856 ms
- DivergenceV3 3.2.0 postgresql 1,882 ms
- CakeCached 5.3.3 postgresql 1,956 ms
- Cake 5.3.3 postgresql 1,975 ms
- Atlas 2.0.1 sqlite-file 2,237 ms
- Eloquent 13.2.0 mariadb 2,242 ms
- Cycle 2.16.0 sqlite-file 2,242 ms
- PHPFUI 3.0.3 sqlite-file 2,318 ms
- Propel2 6cb272b6 sqlite-file 2,318 ms
- DivergenceV3 3.2.0 sqlite-file 2,374 ms
- Yii 2.0.54 sqlite-file 2,401 ms
- RedBean 5.7.5 sqlite-file 2,438 ms
- Eloquent 13.2.0 postgresql 2,477 ms
- Eloquent 13.2.0 sqlite-file 2,621 ms
- RedBean 5.7.5 postgresql 3,631 ms
Where the time goes
Each bar is one framework's mean scenario run, split into its phases and sorted by total. Bars share a scale within each engine. Hover a bar for the numbers.
Init
Insert
Read
Update
Delete
Mean split across 52 combinations
sqlite-memory
- Cycle2.16.0 27.7 ms
- Atlas2.0.1 38.0 ms
- PHPFUIBatch3.0.3 54.2 ms
- PHPFUI3.0.3 61.4 ms
- Propel26cb272b6 83.0 ms
- ActiveRecord2.0.6 103 ms
- Doctrine3.6.2 130 ms
- Yii2.0.54 144 ms
- DivergenceV33.2.0 145 ms
- RedBean5.7.5 149 ms
- Cake5.3.3 270 ms
- CakeCached5.3.3 271 ms
- Eloquent13.2.0 326 ms
sqlite-file
- Doctrine3.6.2 132 ms
- Cake5.3.3 315 ms
- CakeCached5.3.3 317 ms
- PHPFUIBatch3.0.3 958 ms
- ActiveRecord2.0.6 1,676 ms
- Atlas2.0.1 2,237 ms
- Cycle2.16.0 2,242 ms
- PHPFUI3.0.3 2,318 ms
- Propel26cb272b6 2,318 ms
- DivergenceV33.2.0 2,374 ms
- Yii2.0.54 2,401 ms
- RedBean5.7.5 2,438 ms
- Eloquent13.2.0 2,621 ms
mariadb
- PHPFUIBatch3.0.3 627 ms
- Doctrine3.6.2 829 ms
- Cycle2.16.0 936 ms
- Atlas2.0.1 941 ms
- PHPFUI3.0.3 1,050 ms
- Propel26cb272b6 1,091 ms
- CakeCached5.3.3 1,168 ms
- DivergenceV22.1.4 1,170 ms
- Cake5.3.3 1,187 ms
- DivergenceV33.2.0 1,307 ms
- Yii2.0.54 1,336 ms
- RedBean5.7.5 1,686 ms
- Eloquent13.2.0 2,242 ms
postgresql
- Cycle2.16.0 878 ms
- PHPFUIBatch3.0.3 992 ms
- Doctrine3.6.2 1,029 ms
- Propel26cb272b6 1,308 ms
- Atlas2.0.1 1,337 ms
- ActiveRecord2.0.6 1,487 ms
- PHPFUI3.0.3 1,561 ms
- Yii2.0.54 1,856 ms
- DivergenceV33.2.0 1,882 ms
- CakeCached5.3.3 1,956 ms
- Cake5.3.3 1,975 ms
- Eloquent13.2.0 2,477 ms
- RedBean5.7.5 3,631 ms
Exact numbers
| Cycle 2.16.0 | sqlite-memory | 144 | 27.7 ms | 4.34 ms | 4.88 ms | 10.00 ms | 1.93 ms |
|---|---|---|---|---|---|---|---|
| Atlas 2.0.1 | sqlite-memory | 144 | 38.0 ms | 7.02 ms | 8.50 ms | 17.3 ms | 4.52 ms |
| PHPFUIBatch 3.0.3 | sqlite-memory | 144 | 54.2 ms | 6.03 ms | 11.8 ms | 30.8 ms | 4.63 ms |
| PHPFUI 3.0.3 | sqlite-memory | 144 | 61.4 ms | 10.5 ms | 11.8 ms | 30.5 ms | 7.66 ms |
| Propel2 6cb272b6 | sqlite-memory | 144 | 83.0 ms | 13.5 ms | 7.10 ms | 37.6 ms | 21.2 ms |
| ActiveRecord 2.0.6 | sqlite-memory | 144 | 103 ms | 20.6 ms | 19.7 ms | 54.9 ms | 6.38 ms |
| Doctrine 3.6.2 | sqlite-memory | 144 | 130 ms | 15.0 ms | 25.5 ms | 50.7 ms | 21.7 ms |
| Doctrine 3.6.2 | sqlite-file | 144 | 132 ms | 15.1 ms | 25.5 ms | 51.3 ms | 22.1 ms |
| Yii 2.0.54 | sqlite-memory | 144 | 144 ms | 23.4 ms | 24.3 ms | 63.2 ms | 29.7 ms |
| DivergenceV3 3.2.0 | sqlite-memory | 144 | 145 ms | 30.9 ms | 28.3 ms | 75.5 ms | 8.78 ms |
| RedBean 5.7.5 | sqlite-memory | 144 | 149 ms | 33.6 ms | 18.2 ms | 68.7 ms | 21.8 ms |
| Cake 5.3.3 | sqlite-memory | 144 | 270 ms | 73.1 ms | 45.1 ms | 122 ms | 24.5 ms |
| CakeCached 5.3.3 | sqlite-memory | 144 | 271 ms | 73.0 ms | 45.1 ms | 122 ms | 24.6 ms |
| Cake 5.3.3 | sqlite-file | 144 | 315 ms | 76.5 ms | 49.6 ms | 151 ms | 32.4 ms |
| CakeCached 5.3.3 | sqlite-file | 144 | 317 ms | 77.2 ms | 50.0 ms | 152 ms | 32.6 ms |
| Eloquent 13.2.0 | sqlite-memory | 144 | 326 ms | 47.4 ms | 46.1 ms | 166 ms | 52.8 ms |
| PHPFUIBatch 3.0.3 | mariadb | 144 | 627 ms | 14.4 ms | 95.1 ms | 463 ms | 52.5 ms |
| Doctrine 3.6.2 | mariadb | 144 | 829 ms | 67.7 ms | 147 ms | 386 ms | 209 ms |
| Cycle 2.16.0 | postgresql | 144 | 878 ms | 229 ms | 53.8 ms | 343 ms | 245 ms |
| Cycle 2.16.0 | mariadb | 144 | 936 ms | 228 ms | 70.2 ms | 374 ms | 257 ms |
| Atlas 2.0.1 | mariadb | 144 | 941 ms | 232 ms | 77.4 ms | 373 ms | 257 ms |
| PHPFUIBatch 3.0.3 | sqlite-file | 144 | 958 ms | 12.8 ms | 16.6 ms | 913 ms | 15.1 ms |
| PHPFUIBatch 3.0.3 | postgresql | 144 | 992 ms | 16.8 ms | 177 ms | 670 ms | 114 ms |
| Doctrine 3.6.2 | postgresql | 144 | 1,029 ms | 94.4 ms | 168 ms | 466 ms | 282 ms |
| PHPFUI 3.0.3 | mariadb | 144 | 1,050 ms | 238 ms | 92.4 ms | 451 ms | 266 ms |
| Propel2 6cb272b6 | mariadb | 144 | 1,091 ms | 282 ms | 15.2 ms | 428 ms | 361 ms |
| CakeCached 5.3.3 | mariadb | 144 | 1,168 ms | 263 ms | 198 ms | 568 ms | 134 ms |
| DivergenceV2 2.1.4 | mariadb | 144 | 1,170 ms | 269 ms | 111 ms | 520 ms | 267 ms |
| Cake 5.3.3 | mariadb | 144 | 1,187 ms | 271 ms | 202 ms | 575 ms | 133 ms |
| DivergenceV3 3.2.0 | mariadb | 144 | 1,307 ms | 280 ms | 154 ms | 598 ms | 273 ms |
| Propel2 6cb272b6 | postgresql | 144 | 1,308 ms | 321 ms | 15.4 ms | 479 ms | 475 ms |
| Yii 2.0.54 | mariadb | 144 | 1,336 ms | 268 ms | 135 ms | 563 ms | 366 ms |
| Atlas 2.0.1 | postgresql | 144 | 1,337 ms | 291 ms | 155 ms | 517 ms | 360 ms |
| ActiveRecord 2.0.6 | postgresql | 144 | 1,487 ms | 372 ms | 210 ms | 759 ms | 132 ms |
| PHPFUI 3.0.3 | postgresql | 144 | 1,561 ms | 305 ms | 184 ms | 670 ms | 388 ms |
| ActiveRecord 2.0.6 | sqlite-file | 144 | 1,676 ms | 694 ms | 25.5 ms | 941 ms | 14.5 ms |
| RedBean 5.7.5 | mariadb | 144 | 1,686 ms | 471 ms | 106 ms | 772 ms | 329 ms |
| Yii 2.0.54 | postgresql | 144 | 1,856 ms | 340 ms | 216 ms | 777 ms | 506 ms |
| DivergenceV3 3.2.0 | postgresql | 144 | 1,882 ms | 403 ms | 259 ms | 824 ms | 381 ms |
| CakeCached 5.3.3 | postgresql | 144 | 1,956 ms | 484 ms | 335 ms | 912 ms | 220 ms |
| Cake 5.3.3 | postgresql | 144 | 1,975 ms | 484 ms | 333 ms | 931 ms | 222 ms |
| Atlas 2.0.1 | sqlite-file | 144 | 2,237 ms | 679 ms | 13.0 ms | 881 ms | 664 ms |
| Eloquent 13.2.0 | mariadb | 144 | 2,242 ms | 363 ms | 273 ms | 1,037 ms | 552 ms |
| Cycle 2.16.0 | sqlite-file | 144 | 2,242 ms | 688 ms | 8.17 ms | 875 ms | 664 ms |
| PHPFUI 3.0.3 | sqlite-file | 144 | 2,318 ms | 705 ms | 16.7 ms | 915 ms | 680 ms |
| Propel2 6cb272b6 | sqlite-file | 144 | 2,318 ms | 697 ms | 7.84 ms | 910 ms | 700 ms |
| DivergenceV3 3.2.0 | sqlite-file | 144 | 2,374 ms | 711 ms | 28.9 ms | 956 ms | 677 ms |
| Yii 2.0.54 | sqlite-file | 144 | 2,401 ms | 703 ms | 30.6 ms | 952 ms | 712 ms |
| RedBean 5.7.5 | sqlite-file | 144 | 2,438 ms | 736 ms | 23.4 ms | 970 ms | 702 ms |
| Eloquent 13.2.0 | postgresql | 144 | 2,477 ms | 390 ms | 304 ms | 1,116 ms | 637 ms |
| Eloquent 13.2.0 | sqlite-file | 144 | 2,621 ms | 743 ms | 51.8 ms | 1,065 ms | 746 ms |
| RedBean 5.7.5 | postgresql | 144 | 3,631 ms | 1,157 ms | 193 ms | 1,786 ms | 488 ms |
Scenario families
Mean across every framework and engine in this upload.
What the workloads measure
The row shape and operation mix decide where each framework spends its time.
Scenario families
- simple baseline row shape
- Shows framework overhead with minimal field complexity, so object creation and query setup dominate.
- canary mixed field and nullable stress
- Wide mixed records amplify casting, hydration, dirty tracking, and adapter metadata overhead.
- int_fixed pure scalar writes
- A low-noise floor. Slow results here usually mean framework machinery is expensive even before text and cast-heavy payloads show up.
- float_fixed numeric conversion paths
- Decimal and float normalization can widen update and verification cost, especially for ORMs that compare serialized values.
- string_fixed predictable text hydration
- Column count and text assignment matter more than payload variability, which makes hydration strategy easier to isolate.
- string_variable application-like text workload
- Variable strings and note fields make this the closest to real CRUD traffic and usually punish heavier active-record layers the most.
Operation shapes
- Warmup vs hot runs
- Run 1 is warmup. Hot-path averages exclude it so boot and metadata setup do not dominate steady-state rankings.
- Insert and indexed schemas
- Indexed tables make writes cost more because every insert and many updates must maintain secondary indexes as well as the row itself.
- Read all vs read probes
- Read All rewards bulk hydration efficiency; random and tail probes expose per-query setup, lookup overhead, and tiny-result inefficiency.
- Update with verification
- Each update shape is followed by a verification read, so dirty-checking, write SQL generation, hydration, and comparison all affect the final time.
- Delete with confirmation
- Deletes are checked afterward. Frameworks that pay extra for follow-up lookups or teardown lose more time here than a bare SQL path.
- Total runtime
- The total runtime metric is effectively a benchmark of the machine plus adapter behavior across the full workload, not just one CRUD verb.