Wróć do wszystkich wpisów

Artykuł • Czytanie 1 min

Programiści PHP – pamiętajcie o iteratorach

Foreach loop vs Iterator lopp. Test polegający na porównaniu działania fetchAll oraz iteratory dla PDO, w przypadku pobrania 64k rekordów.

Powtórzony napis "php" na tle turkusowych kątów geometrycznych.

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

Może cię zainteresować