SPL vs SPF
Obu staralem się zapewnić jednakowe środowisko uruchomieniowe. Zrezygnowałem z testu w przeglądarce na rzecz konsoli w mojej Fedorce. Nie jest to oczywiście w pełni miarodajny test, ale na pewno da Wam jakieś pojęcie na ten temat.
Małe wyjaśnienie:
SPF to Standard PHP Functions
SPL to Standard PHP Library (tutaj konkretnie chodzi o DirectoryIterator)
Test 1 kod testu
- 100 plików graficznych w katalogu
- filtr na rozszerzenie .jpg
- 5 iteracji skryptu po 5000 iteracji katalogu każda
Iteracje:
SPF: 2.31422591209
SPL: 3.24030208588
SPF: 2.37819099426
SPL: 3.2218940258
SPF: 2.42922902107
SPL: 3.95322990417
SPF: 2.70885491371
SPL: 3.16421794891
SPF: 2.37303519249
SPL: 3.23532986641
Łączne czasy:
SPF: 12.2035360336
SPL: 16.8149738312
Test 2 kod testu
Warunki takie same jak poprzednio, lecz dodatkowo tworzona jest tablica znalezionych plików
Iteracje:
SPF: 2.95562911034
SPL: 4.24484300613
SPF: 2.96667480469
SPL: 4.27122497559
SPF: 2.84061980247
SPL: 4.13145589828
SPF: 3.03891181946
SPL: 4.36569881439
SPF: 2.84957885742
SPL: 4.10521483421
Łączne czasy:
SPF: 14.6514143944
SPL: 21.1184375286
Widać wyraźnie, że SPL znów przegrało. Nic dziwnego, bo zmeniło się niewiele. Popatrzmy jednak dalej.
Test 3 kod testu
Warunki jak w teście pierwszym, ale tutaj musimy przygotować dane dla innej funkcji. Wyniki nadal przemawiają za klasycznym podejściem, ale już tak nie biją po oczach jak wyniki poprzednich testów.
Iteracje:
SPF: 2.95964694023
SPL: 3.29182982445
SPF: 2.90222501755
SPL: 3.28053212166
SPF: 2.91018295288
SPL: 3.25611805916
SPF: 3.86296701431
SPL: 3.30490803719
SPF: 2.89003896713
SPL: 3.25660395622
Łączne czasy:
SPF: 15.5250608921
SPL: 16.3899919987
Iteracje:
SPF: 33.4898278713
SPL: 33.1929478645
SPF: 36.1754798889
SPL: 37.2197220325
SPF: 36.7499339581
SPL: 37.4044959545
SPF: 27.3576068878
SPL: 28.5377857685
SPF: 27.4663441181
SPL: 28.3249459267
Łączne czasy:
SPF: 161.239192724
SPL: 164.679897547
DirectoryIterator, jak zapewne większość klas SPL jest nieco wolniejszy. Wydaje mi się jednak, że korzyści płynące z używania SPL przewyższają te uzyskiwane poprzez klasyczne metody. Mniej kodu, bardziej elegancko - za to trzeba po prostu zapłacić
Jeśli znajdę czas, to przetestuję RecursiveDirectoryIterator w podobny sposób.


Właśnie przeglądałem Twoje wpisy w Google Reader, i chciałem przeczytać całość, I wygląda na to, że RSS który udostępniasz, podaje błędnie ścieżki do wpisów - tj.
http://localhost/blog/show/id_4/
Pozdrawiam