| 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 |
|---|---|---|---|---|---|---|---|
| Cycle 2.16.0 |
postgresql | 312 | 0.060871s | 0.005186s | 0.009485s | 0.026623s | 0.004472s |
| Atlas 2.0.1 |
postgresql | 312 | 0.087134s | 0.006556s | 0.018190s | 0.047290s | 0.007390s |
| Propel2 6cb272b6 |
postgresql | 312 | 0.110159s | 0.014229s | 0.014856s | 0.055255s | 0.013091s |
| PHPFUIBatch 3.0.3 |
postgresql | 312 | 0.113062s | 0.007867s | 0.020687s | 0.070149s | 0.005208s |
| PHPFUI 3.0.3 |
postgresql | 312 | 0.114270s | 0.009542s | 0.020993s | 0.067045s | 0.008439s |
| Doctrine 3.6.2 |
postgresql | 312 | 0.142154s | 0.026714s | 0.025516s | 0.040808s | 0.005015s |
| ActiveRecord 2.0.6 |
postgresql | 312 | 0.144547s | 0.020455s | 0.026765s | 0.083933s | 0.004414s |
| DivergenceV3 3.2.0 |
postgresql | 312 | 0.164651s | 0.019835s | 0.032624s | 0.094923s | 0.008395s |
| Yii 2.0.54 |
postgresql | 312 | 0.176367s | 0.026880s | 0.034317s | 0.085546s | 0.013103s |
| CakeCached 5.3.3 |
postgresql | 312 | 0.239076s | 0.073319s | 0.036618s | 0.108095s | 0.007348s |
| Cake 5.3.3 |
postgresql | 312 | 0.240559s | 0.068267s | 0.038341s | 0.112259s | 0.007682s |
| RedBean 5.7.5 |
postgresql | 312 | 0.273632s | 0.039279s | 0.009845s | 0.195221s | 0.012134s |
| Eloquent 13.2.0 |
postgresql | 312 | 0.306529s | 0.046741s | 0.041363s | 0.154995s | 0.016969s |