- Started
- Generated
- Measured samples
- 312
- Combinations
- 52
Machine
Captured from the runner's system manifest.
Host
eimu
Linux · kernel 6.19.6
PHP
8.5.3
Processor
AMD Ryzen 9 5950X 16-Core Processor
32 cores · x86_64
Memory
31.2 GB
DIMM_A2 16 GiB 2666 MT/s DDR4 F4-4266C19-16GVK
DIMM_B2 16 GiB 2666 MT/s DDR4 F4-4266C19-16GVK
Disk
3.5 TB
Device: /dev/nvme0n1
Capacity: 3.5 TB
Runtime envelope
End-to-end time per scenario run across all non-warmup samples.
- Min sample
- 5.42 ms
- Mean sample
- 127 ms
- Max sample
- 447 ms
- Cumulative time
- 39.501s
- Throughput
- 7.899/s
Runtime comparison
Mean time per scenario run in this upload, warmup runs excluded, sorted by runtime.
Init
Insert
Read
Update
Delete
- Atlas 2.0.1 sqlite-memory 11.9 ms
- PHPFUI 3.0.3 sqlite-memory 22.0 ms
- Cycle 2.16.0 sqlite-memory 24.0 ms
- PHPFUIBatch 3.0.3 sqlite-memory 24.7 ms
- Propel2 6cb272b6 sqlite-memory 45.5 ms
- ActiveRecord 2.0.6 sqlite-memory 46.5 ms
- RedBean 5.7.5 sqlite-memory 54.9 ms
- DivergenceV3 3.2.0 sqlite-memory 58.7 ms
- Atlas 2.0.1 mariadb 59.1 ms
- Cycle 2.16.0 postgresql 60.9 ms
- Yii 2.0.54 sqlite-memory 61.4 ms
- PHPFUIBatch 3.0.3 mariadb 72.1 ms
- Cycle 2.16.0 mariadb 72.9 ms
- PHPFUI 3.0.3 mariadb 76.7 ms
- Atlas 2.0.1 sqlite-file 85.9 ms
- Atlas 2.0.1 postgresql 87.1 ms
- Propel2 6cb272b6 mariadb 92.3 ms
- DivergenceV2 2.1.4 mariadb 99.3 ms
- Doctrine 3.6.2 sqlite-file 101 ms
- PHPFUIBatch 3.0.3 sqlite-file 102 ms
- Doctrine 3.6.2 sqlite-memory 105 ms
- Propel2 6cb272b6 postgresql 110 ms
- PHPFUIBatch 3.0.3 postgresql 113 ms
- PHPFUI 3.0.3 postgresql 114 ms
- Cycle 2.16.0 sqlite-file 115 ms
- DivergenceV3 3.2.0 mariadb 117 ms
- ActiveRecord 2.0.6 sqlite-file 119 ms
- PHPFUI 3.0.3 sqlite-file 123 ms
- Yii 2.0.54 mariadb 125 ms
- CakeCached 5.3.3 sqlite-memory 128 ms
- Cake 5.3.3 sqlite-memory 134 ms
- Propel2 6cb272b6 sqlite-file 140 ms
- Doctrine 3.6.2 postgresql 142 ms
- ActiveRecord 2.0.6 postgresql 145 ms
- Doctrine 3.6.2 mariadb 146 ms
- CakeCached 5.3.3 sqlite-file 147 ms
- Cake 5.3.3 sqlite-file 148 ms
- RedBean 5.7.5 mariadb 149 ms
- Yii 2.0.54 sqlite-file 151 ms
- RedBean 5.7.5 sqlite-file 160 ms
- DivergenceV3 3.2.0 sqlite-file 161 ms
- DivergenceV3 3.2.0 postgresql 165 ms
- Cake 5.3.3 mariadb 174 ms
- Yii 2.0.54 postgresql 176 ms
- CakeCached 5.3.3 mariadb 177 ms
- Eloquent 13.2.0 sqlite-memory 192 ms
- CakeCached 5.3.3 postgresql 239 ms
- Cake 5.3.3 postgresql 241 ms
- RedBean 5.7.5 postgresql 274 ms
- Eloquent 13.2.0 mariadb 291 ms
- Eloquent 13.2.0 sqlite-file 297 ms
- Eloquent 13.2.0 postgresql 307 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
- Atlas2.0.1 11.9 ms
- PHPFUI3.0.3 22.0 ms
- Cycle2.16.0 24.0 ms
- PHPFUIBatch3.0.3 24.7 ms
- Propel26cb272b6 45.5 ms
- ActiveRecord2.0.6 46.5 ms
- RedBean5.7.5 54.9 ms
- DivergenceV33.2.0 58.7 ms
- Yii2.0.54 61.4 ms
- Doctrine3.6.2 105 ms
- CakeCached5.3.3 128 ms
- Cake5.3.3 134 ms
- Eloquent13.2.0 192 ms
sqlite-file
- Atlas2.0.1 85.9 ms
- Doctrine3.6.2 101 ms
- PHPFUIBatch3.0.3 102 ms
- Cycle2.16.0 115 ms
- ActiveRecord2.0.6 119 ms
- PHPFUI3.0.3 123 ms
- Propel26cb272b6 140 ms
- CakeCached5.3.3 147 ms
- Cake5.3.3 148 ms
- Yii2.0.54 151 ms
- RedBean5.7.5 160 ms
- DivergenceV33.2.0 161 ms
- Eloquent13.2.0 297 ms
mariadb
- Atlas2.0.1 59.1 ms
- PHPFUIBatch3.0.3 72.1 ms
- Cycle2.16.0 72.9 ms
- PHPFUI3.0.3 76.7 ms
- Propel26cb272b6 92.3 ms
- DivergenceV22.1.4 99.3 ms
- DivergenceV33.2.0 117 ms
- Yii2.0.54 125 ms
- Doctrine3.6.2 146 ms
- RedBean5.7.5 149 ms
- Cake5.3.3 174 ms
- CakeCached5.3.3 177 ms
- Eloquent13.2.0 291 ms
postgresql
- Cycle2.16.0 60.9 ms
- Atlas2.0.1 87.1 ms
- Propel26cb272b6 110 ms
- PHPFUIBatch3.0.3 113 ms
- PHPFUI3.0.3 114 ms
- Doctrine3.6.2 142 ms
- ActiveRecord2.0.6 145 ms
- DivergenceV33.2.0 165 ms
- Yii2.0.54 176 ms
- CakeCached5.3.3 239 ms
- Cake5.3.3 241 ms
- RedBean5.7.5 274 ms
- Eloquent13.2.0 307 ms
Exact numbers
| Atlas 2.0.1 | sqlite-memory | 6 | 11.9 ms | 1.17 ms | 3.42 ms | 5.67 ms | 0.23 ms |
|---|---|---|---|---|---|---|---|
| PHPFUI 3.0.3 | sqlite-memory | 6 | 22.0 ms | 4.22 ms | 5.35 ms | 9.64 ms | 0.65 ms |
| Cycle 2.16.0 | sqlite-memory | 6 | 24.0 ms | 1.01 ms | 3.03 ms | 4.25 ms | 0.16 ms |
| PHPFUIBatch 3.0.3 | sqlite-memory | 6 | 24.7 ms | 6.16 ms | 5.03 ms | 10.0 ms | 1.34 ms |
| Propel2 6cb272b6 | sqlite-memory | 6 | 45.5 ms | 7.34 ms | 11.5 ms | 18.2 ms | 1.82 ms |
| ActiveRecord 2.0.6 | sqlite-memory | 6 | 46.5 ms | 10.5 ms | 9.81 ms | 23.1 ms | 0.83 ms |
| RedBean 5.7.5 | sqlite-memory | 6 | 54.9 ms | 7.08 ms | 5.68 ms | 22.8 ms | 1.53 ms |
| DivergenceV3 3.2.0 | sqlite-memory | 6 | 58.7 ms | 11.1 ms | 13.9 ms | 30.2 ms | 1.22 ms |
| Atlas 2.0.1 | mariadb | 6 | 59.1 ms | 5.48 ms | 11.2 ms | 35.0 ms | 5.48 ms |
| Cycle 2.16.0 | postgresql | 6 | 60.9 ms | 5.19 ms | 9.49 ms | 26.6 ms | 4.47 ms |
| Yii 2.0.54 | sqlite-memory | 6 | 61.4 ms | 10.7 ms | 16.2 ms | 22.5 ms | 2.32 ms |
| PHPFUIBatch 3.0.3 | mariadb | 6 | 72.1 ms | 7.55 ms | 12.3 ms | 46.4 ms | 3.09 ms |
| Cycle 2.16.0 | mariadb | 6 | 72.9 ms | 5.78 ms | 11.2 ms | 35.6 ms | 5.94 ms |
| PHPFUI 3.0.3 | mariadb | 6 | 76.7 ms | 8.87 ms | 12.6 ms | 46.4 ms | 6.08 ms |
| Atlas 2.0.1 | sqlite-file | 6 | 85.9 ms | 11.7 ms | 4.78 ms | 58.0 ms | 10.1 ms |
| Atlas 2.0.1 | postgresql | 6 | 87.1 ms | 6.56 ms | 18.2 ms | 47.3 ms | 7.39 ms |
| Propel2 6cb272b6 | mariadb | 6 | 92.3 ms | 14.1 ms | 12.7 ms | 48.8 ms | 9.51 ms |
| DivergenceV2 2.1.4 | mariadb | 6 | 99.3 ms | 13.4 ms | 16.6 ms | 61.4 ms | 5.90 ms |
| Doctrine 3.6.2 | sqlite-file | 6 | 101 ms | 21.8 ms | 16.9 ms | 17.6 ms | 1.38 ms |
| PHPFUIBatch 3.0.3 | sqlite-file | 6 | 102 ms | 8.22 ms | 5.85 ms | 82.8 ms | 2.72 ms |
| Doctrine 3.6.2 | sqlite-memory | 6 | 105 ms | 22.6 ms | 17.1 ms | 18.6 ms | 1.58 ms |
| Propel2 6cb272b6 | postgresql | 6 | 110 ms | 14.2 ms | 14.9 ms | 55.3 ms | 13.1 ms |
| PHPFUIBatch 3.0.3 | postgresql | 6 | 113 ms | 7.87 ms | 20.7 ms | 70.1 ms | 5.21 ms |
| PHPFUI 3.0.3 | postgresql | 6 | 114 ms | 9.54 ms | 21.0 ms | 67.0 ms | 8.44 ms |
| Cycle 2.16.0 | sqlite-file | 6 | 115 ms | 14.2 ms | 4.84 ms | 69.5 ms | 12.7 ms |
| DivergenceV3 3.2.0 | mariadb | 6 | 117 ms | 15.6 ms | 22.8 ms | 69.8 ms | 6.57 ms |
| ActiveRecord 2.0.6 | sqlite-file | 6 | 119 ms | 22.6 ms | 12.2 ms | 80.0 ms | 2.03 ms |
| PHPFUI 3.0.3 | sqlite-file | 6 | 123 ms | 17.8 ms | 6.53 ms | 81.9 ms | 14.4 ms |
| Yii 2.0.54 | mariadb | 6 | 125 ms | 18.6 ms | 25.9 ms | 60.8 ms | 9.57 ms |
| CakeCached 5.3.3 | sqlite-memory | 6 | 128 ms | 45.4 ms | 17.8 ms | 48.5 ms | 3.30 ms |
| Cake 5.3.3 | sqlite-memory | 6 | 134 ms | 48.7 ms | 19.0 ms | 49.3 ms | 3.31 ms |
| Propel2 6cb272b6 | sqlite-file | 6 | 140 ms | 21.8 ms | 12.0 ms | 84.2 ms | 14.9 ms |
| Doctrine 3.6.2 | postgresql | 6 | 142 ms | 26.7 ms | 25.5 ms | 40.8 ms | 5.01 ms |
| ActiveRecord 2.0.6 | postgresql | 6 | 145 ms | 20.5 ms | 26.8 ms | 83.9 ms | 4.41 ms |
| Doctrine 3.6.2 | mariadb | 6 | 146 ms | 26.8 ms | 26.9 ms | 41.3 ms | 4.84 ms |
| CakeCached 5.3.3 | sqlite-file | 6 | 147 ms | 48.1 ms | 19.8 ms | 60.3 ms | 5.32 ms |
| Cake 5.3.3 | sqlite-file | 6 | 148 ms | 49.3 ms | 20.2 ms | 60.2 ms | 4.63 ms |
| RedBean 5.7.5 | mariadb | 6 | 149 ms | 19.6 ms | 7.55 ms | 96.4 ms | 8.74 ms |
| Yii 2.0.54 | sqlite-file | 6 | 151 ms | 24.7 ms | 18.3 ms | 85.5 ms | 13.0 ms |
| RedBean 5.7.5 | sqlite-file | 6 | 160 ms | 22.6 ms | 6.87 ms | 97.6 ms | 15.5 ms |
| DivergenceV3 3.2.0 | sqlite-file | 6 | 161 ms | 25.5 ms | 15.3 ms | 104 ms | 13.9 ms |
| DivergenceV3 3.2.0 | postgresql | 6 | 165 ms | 19.8 ms | 32.6 ms | 94.9 ms | 8.40 ms |
| Cake 5.3.3 | mariadb | 6 | 174 ms | 53.2 ms | 26.0 ms | 76.8 ms | 5.65 ms |
| Yii 2.0.54 | postgresql | 6 | 176 ms | 26.9 ms | 34.3 ms | 85.5 ms | 13.1 ms |
| CakeCached 5.3.3 | mariadb | 6 | 177 ms | 54.5 ms | 26.8 ms | 76.6 ms | 5.72 ms |
| Eloquent 13.2.0 | sqlite-memory | 6 | 192 ms | 37.6 ms | 22.4 ms | 88.6 ms | 4.85 ms |
| CakeCached 5.3.3 | postgresql | 6 | 239 ms | 73.3 ms | 36.6 ms | 108 ms | 7.35 ms |
| Cake 5.3.3 | postgresql | 6 | 241 ms | 68.3 ms | 38.3 ms | 112 ms | 7.68 ms |
| RedBean 5.7.5 | postgresql | 6 | 274 ms | 39.3 ms | 9.84 ms | 195 ms | 12.1 ms |
| Eloquent 13.2.0 | mariadb | 6 | 291 ms | 46.4 ms | 38.6 ms | 148 ms | 16.5 ms |
| Eloquent 13.2.0 | sqlite-file | 6 | 297 ms | 52.5 ms | 23.9 ms | 163 ms | 18.2 ms |
| Eloquent 13.2.0 | postgresql | 6 | 307 ms | 46.7 ms | 41.4 ms | 155 ms | 17.0 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.