Programiści PHP - pamiętajcie o iteratorach
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