| 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 |
sqlite-memory | 312 | 0.011893s | 0.001171s | 0.003418s | 0.005670s | 0.000233s |
| PHPFUI 3.0.3 |
sqlite-memory | 312 | 0.022028s | 0.004223s | 0.005351s | 0.009640s | 0.000647s |
| Cycle 2.16.0 |
sqlite-memory | 312 | 0.023986s | 0.001013s | 0.003033s | 0.004255s | 0.000164s |
| PHPFUIBatch 3.0.3 |
sqlite-memory | 312 | 0.024710s | 0.006161s | 0.005034s | 0.010017s | 0.001341s |
| Propel2 6cb272b6 |
sqlite-memory | 312 | 0.045488s | 0.007338s | 0.011485s | 0.018221s | 0.001821s |
| ActiveRecord 2.0.6 |
sqlite-memory | 312 | 0.046491s | 0.010528s | 0.009809s | 0.023104s | 0.000833s |
| RedBean 5.7.5 |
sqlite-memory | 312 | 0.054854s | 0.007080s | 0.005679s | 0.022766s | 0.001531s |
| DivergenceV3 3.2.0 |
sqlite-memory | 312 | 0.058695s | 0.011085s | 0.013932s | 0.030209s | 0.001224s |
| Atlas 2.0.1 |
mariadb | 312 | 0.059061s | 0.005475s | 0.011232s | 0.034971s | 0.005476s |
| Cycle 2.16.0 |
postgresql | 312 | 0.060871s | 0.005186s | 0.009485s | 0.026623s | 0.004472s |
| Yii 2.0.54 |
sqlite-memory | 312 | 0.061358s | 0.010707s | 0.016202s | 0.022471s | 0.002323s |
| 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 |
| Atlas 2.0.1 |
sqlite-file | 312 | 0.085864s | 0.011671s | 0.004776s | 0.057991s | 0.010071s |
| Atlas 2.0.1 |
postgresql | 312 | 0.087134s | 0.006556s | 0.018190s | 0.047290s | 0.007390s |
| 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 |
| Doctrine 3.6.2 |
sqlite-file | 312 | 0.101433s | 0.021777s | 0.016859s | 0.017637s | 0.001383s |
| PHPFUIBatch 3.0.3 |
sqlite-file | 312 | 0.101979s | 0.008220s | 0.005851s | 0.082785s | 0.002716s |
| Doctrine 3.6.2 |
sqlite-memory | 312 | 0.104974s | 0.022564s | 0.017059s | 0.018556s | 0.001576s |
| 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 |
| Cycle 2.16.0 |
sqlite-file | 312 | 0.115485s | 0.014167s | 0.004841s | 0.069482s | 0.012711s |
| DivergenceV3 3.2.0 |
mariadb | 312 | 0.117451s | 0.015642s | 0.022844s | 0.069802s | 0.006569s |
| ActiveRecord 2.0.6 |
sqlite-file | 312 | 0.119332s | 0.022642s | 0.012249s | 0.080010s | 0.002031s |
| PHPFUI 3.0.3 |
sqlite-file | 312 | 0.123102s | 0.017820s | 0.006531s | 0.081945s | 0.014424s |
| Yii 2.0.54 |
mariadb | 312 | 0.125440s | 0.018615s | 0.025889s | 0.060829s | 0.009575s |
| CakeCached 5.3.3 |
sqlite-memory | 312 | 0.127842s | 0.045371s | 0.017826s | 0.048530s | 0.003297s |
| Cake 5.3.3 |
sqlite-memory | 312 | 0.133757s | 0.048734s | 0.019003s | 0.049274s | 0.003308s |
| Propel2 6cb272b6 |
sqlite-file | 312 | 0.140120s | 0.021820s | 0.012038s | 0.084219s | 0.014929s |
| 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 |
| Doctrine 3.6.2 |
mariadb | 312 | 0.145618s | 0.026813s | 0.026906s | 0.041315s | 0.004842s |
| CakeCached 5.3.3 |
sqlite-file | 312 | 0.146605s | 0.048116s | 0.019845s | 0.060316s | 0.005323s |
| Cake 5.3.3 |
sqlite-file | 312 | 0.147610s | 0.049271s | 0.020203s | 0.060169s | 0.004634s |
| RedBean 5.7.5 |
mariadb | 312 | 0.148984s | 0.019573s | 0.007549s | 0.096448s | 0.008739s |
| Yii 2.0.54 |
sqlite-file | 312 | 0.151413s | 0.024662s | 0.018280s | 0.085530s | 0.012982s |
| RedBean 5.7.5 |
sqlite-file | 312 | 0.159945s | 0.022608s | 0.006873s | 0.097580s | 0.015457s |
| DivergenceV3 3.2.0 |
sqlite-file | 312 | 0.161307s | 0.025543s | 0.015308s | 0.104333s | 0.013905s |
| DivergenceV3 3.2.0 |
postgresql | 312 | 0.164651s | 0.019835s | 0.032624s | 0.094923s | 0.008395s |
| Cake 5.3.3 |
mariadb | 312 | 0.174172s | 0.053201s | 0.026042s | 0.076846s | 0.005651s |
| Yii 2.0.54 |
postgresql | 312 | 0.176367s | 0.026880s | 0.034317s | 0.085546s | 0.013103s |
| CakeCached 5.3.3 |
mariadb | 312 | 0.176717s | 0.054525s | 0.026752s | 0.076597s | 0.005720s |
| Eloquent 13.2.0 |
sqlite-memory | 312 | 0.191504s | 0.037605s | 0.022422s | 0.088599s | 0.004846s |
| 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 |
mariadb | 312 | 0.290719s | 0.046422s | 0.038589s | 0.148028s | 0.016533s |
| Eloquent 13.2.0 |
sqlite-file | 312 | 0.297289s | 0.052451s | 0.023884s | 0.162876s | 0.018188s |
| Eloquent 13.2.0 |
postgresql | 312 | 0.306529s | 0.046741s | 0.041363s | 0.154995s | 0.016969s |