- linux or bsd system
- PHP 5.3 or greater
- pdo_sqlite
> cd /path/to/php-orm-benchmark
> php TestRunner.php
> cd /path/to/php-orm-benchmark
> cd propel_20
> php TestRunner.php
-
Mass insertion: Tests model objects and save() operations.
-
Retrieve By Pk: Tests basic hydration
-
Complex Query an OR but no hydration: Tests Query parsing
-
Basic Query with 5 results: Tests hydration and collections
-
Query with join: Tests join hydration
The reference is the PDOTestSuite (the number of tests is adjusted to make raw PDO score about 100 to each test). For the ORMs, the smaller score is the better (i. e. the faster).
(updated 2017-Feb-1)
Library | Insert | findPk | complex | hydrate | with | memory usage | time |
---|---|---|---|---|---|---|---|
PDO | 24 | 5 | 10 | 56 | 184 | 1,699,136 | 0.28 |
Maghead | 91 | 1 | 56 | 95 | 228 | 8,388,608 | 0.48 |
LessQL | 102 | 26 | 330 | 142 | 175 | 7,990,728 | 0.78 |
YiiM | 172 | 20 | 309 | 95 | 306 | 6,291,456 | 0.92 |
YiiMWithCache | 160 | 21 | 308 | 100 | 304 | 6,291,456 | 0.91 |
Yii2M | 316 | 40 | 293 | 160 | 340 | 6,291,456 | 1.17 |
Yii2MArrayHydrate | 305 | 42 | 315 | 100 | 291 | 6,291,456 | 1.07 |
Yii2MScalarHydrate | 304 | 43 | 296 | 107 | 177 | 6,291,456 | 0.94 |
Propel20 | 140 | 16 | 410 | 287 | 413 | 8,388,608 | 1.27 |
Propel20WithCache | 111 | 10 | 363 | 247 | 336 | 8,388,608 | 1.08 |
Propel20FormatOnDemand | 96 | 11 | 366 | 223 | 334 | 8,388,608 | 1.04 |
DoctrineM | 183 | 38 | 311 | 227 | 220 | 18,874,368 | 1.02 |
DoctrineMWithCache | 192 | 45 | 310 | 237 | 233 | 18,874,368 | 1.05 |
DoctrineMArrayHydrate | 178 | 45 | 292 | 136 | 162 | 16,777,216 | 0.86 |
DoctrineMScalarHydrate | 178 | 40 | 296 | 119 | 136 | 16,777,216 | 0.81 |
DoctrineMWithoutProxies | 168 | 40 | 320 | 172 | 352 | 16,777,216 | 1.09 |
Eloquent | 367 | 54 | 373 | 157 | 311 | 8,388,608 | 1.28 |
EloquentWithoutEvent | 313 | 42 | 377 | 157 | 282 | 8,388,608 | 1.18 |
(updated 2015-Dec-07)
Library | Insert | findPk | complex | hydrate | with | memory usage | time |
---|---|---|---|---|---|---|---|
PDO | 49 | 45 | 0 | 33 | 92 | 775,264 | 0.22 |
LessQL | 153 | 154 | 0 | 114 | 135 | 5,232,880 | 0.57 |
YiiM | 211 | 138 | 0 | 79 | 201 | 9,961,472 | 0.67 |
YiiMWithCache | 217 | 148 | 0 | 88 | 222 | 9,961,472 | 0.71 |
Yii2M | 603 | 338 | 0 | 187 | 252 | 14,155,776 | 1.46 |
Yii2MArrayHydrate | 585 | 327 | 0 | 120 | 220 | 14,155,776 | 1.31 |
Yii2MScalarHydrate | 571 | 321 | 0 | 105 | 102 | 14,155,776 | 1.17 |
Propel20 | 218 | 105 | 0 | 263 | 323 | 10,747,904 | 0.98 |
Propel20WithCache | 156 | 68 | 0 | 228 | 261 | 10,747,904 | 0.77 |
Propel20FormatOnDemand | 151 | 67 | 0 | 221 | 264 | 11,010,048 | 0.76 |
DoctrineM | 252 | 280 | 0 | 342 | 193 | 17,301,504 | 1.55 |
DoctrineMWithCache | 266 | 272 | 0 | 332 | 189 | 17,039,360 | 1.54 |
DoctrineMArrayHydrate | 263 | 282 | 0 | 226 | 141 | 17,825,792 | 1.35 |
DoctrineMScalarHydrate | 242 | 292 | 0 | 192 | 123 | 17,825,792 | 1.25 |
DoctrineMWithoutProxies | 243 | 266 | 0 | 253 | 251 | 16,777,216 | 1.43 |
Eloquent | 419 | 254 | 0 | 126 | 218 | 11,534,336 | 1.09 |
EloquentWithoutEvent | 380 | 260 | 0 | 124 | 232 | 11,534,336 | 1.06 |
(updated 2015-Dec-07)
Library | Insert | findPk | complex | hydrate | with | memory usage | time |
---|---|---|---|---|---|---|---|
PDO | 54 | 30 | 0 | 37 | 92 | 783,680 | 0.23 |
LessQL | 165 | 194 | 0 | 78 | 135 | 10,316,584 | 0.66 |
YiiM | 333 | 194 | 0 | 81 | 494 | 7,267,424 | 1.33 |
YiiMWithCache | 337 | 191 | 0 | 81 | 465 | 7,286,040 | 1.30 |
Yii2M | 722 | 272 | 0 | 103 | 175 | 9,025,400 | 1.90 |
Yii2MArrayHydrate | 702 | 273 | 0 | 100 | 165 | 9,033,272 | 1.83 |
Yii2MScalarHydrate | 700 | 291 | 0 | 90 | 70 | 8,997,160 | 1.74 |
Propel20 | 545 | 169 | 0 | 771 | 512 | 9,740,696 | 2.30 |
Propel20WithCache | 481 | 135 | 0 | 736 | 485 | 9,807,688 | 2.14 |
Propel20FormatOnDemand | 479 | 128 | 0 | 675 | 463 | 9,822,696 | 2.05 |
DoctrineM | 634 | 647 | 0 | 1009 | 342 | 19,639,560 | 5.11 |
DoctrineMWithCache | 624 | 674 | 0 | 1047 | 339 | 19,635,128 | 5.07 |
DoctrineMArrayHydrate | 629 | 642 | 0 | 804 | 249 | 18,447,232 | 4.73 |
DoctrineMScalarHydrate | 618 | 634 | 0 | 747 | 203 | 17,366,336 | 4.55 |
DoctrineMWithoutProxies | 620 | 629 | 0 | 849 | 357 | 19,402,032 | 4.85 |
Eloquent | 589 | 273 | 0 | 98 | 203 | 14,652,488 | 1.53 |
EloquentWithoutEvent | 547 | 264 | 0 | 99 | 206 | 14,572,112 | 1.45 |
TODO