Programiści PHP - pamiętajcie o iteratorach

avatar icon blog author
#TeamSpeednet

Michelangelo van Dam, miłośnik m.in. unit testów i prelegent PHPCon Poland, kilka dni temu opublikował wyniki swojego testu. Test polegał na porównaniu działania fetchAll oraz iteratora dla PDO, w przypadku pobrania 64k rekordów z bazy danych. Oto wyniki w pigułce:

Foreach loop

  • Data fetching time for 63992 of 250000 records: 2.14s
  • Data processing time for 63992 of 250000 records: 7.11s
  • Total time for 63992 of 250000 records: 9.25s
  • Memory consumption for 63992 of 250000 records: 217.75MB

Iterator loop

  • Data fetching time for 63992 of 250000 records: 0.92s
  • Data processing time for 63992 of 250000 records: 5.57s
  • Total time for 63992 of 250000 records: 6.49s
  • Memory consumption for 63992 of 250000 records: 0.25MB

217.75MB vs 0.25MB - widać różnicę?
Więcej: Speeding up database calls with PDO and iterators