| Family | Pressure | Why It Changes Speed | Avg Runtime |
|---|---|---|---|
| simple | baseline row shape | Shows framework overhead with minimal field complexity, so object creation and query setup dominate. | 0.099689s |
| canary | mixed field and nullable stress | Wide mixed records amplify casting, hydration, dirty tracking, and adapter metadata overhead. | 0.154049s |
| 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. | 0.123969s |
| float_fixed | numeric conversion paths | Decimal and float normalization can widen update and verification cost, especially for ORMs that compare serialized values. | 0.141195s |
| string_fixed | predictable text hydration | Column count and text assignment matter more than payload variability, which makes hydration strategy easier to isolate. | 0.118621s |
| 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. | 0.122112s |
| Operation Shape | Why Models Move |
|---|---|
| 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. |
| Framework | Storage | Samples | Total | Insert | Read | Update | Delete |
|---|---|---|---|---|---|---|---|
| Atlas 2.0.1 |
mariadb | 312 | 0.059061s | 0.005475s | 0.011232s | 0.034971s | 0.005476s |
| PHPFUIBatch 3.0.3 |
mariadb | 312 | 0.072125s | 0.007551s | 0.012312s | 0.046393s | 0.003094s |
| Cycle 2.16.0 |
mariadb | 312 | 0.072922s | 0.005775s | 0.011239s | 0.035555s | 0.005945s |
| PHPFUI 3.0.3 |
mariadb | 312 | 0.076672s | 0.008868s | 0.012574s | 0.046404s | 0.006078s |
| Propel2 6cb272b6 |
mariadb | 312 | 0.092292s | 0.014117s | 0.012697s | 0.048751s | 0.009507s |
| DivergenceV2 2.1.4 |
mariadb | 312 | 0.099256s | 0.013371s | 0.016609s | 0.061413s | 0.005905s |
| DivergenceV3 3.2.0 |
mariadb | 312 | 0.117451s | 0.015642s | 0.022844s | 0.069802s | 0.006569s |
| Yii 2.0.54 |
mariadb | 312 | 0.125440s | 0.018615s | 0.025889s | 0.060829s | 0.009575s |
| Doctrine 3.6.2 |
mariadb | 312 | 0.145618s | 0.026813s | 0.026906s | 0.041315s | 0.004842s |
| RedBean 5.7.5 |
mariadb | 312 | 0.148984s | 0.019573s | 0.007549s | 0.096448s | 0.008739s |
| Cake 5.3.3 |
mariadb | 312 | 0.174172s | 0.053201s | 0.026042s | 0.076846s | 0.005651s |
| CakeCached 5.3.3 |
mariadb | 312 | 0.176717s | 0.054525s | 0.026752s | 0.076597s | 0.005720s |
| Eloquent 13.2.0 |
mariadb | 312 | 0.290719s | 0.046422s | 0.038589s | 0.148028s | 0.016533s |