Temat: file_exists(URL) vs file_exists(PATH) ?
I tu i tu.
Teoretycznie, obie funkcje powinny działać z podobną prędkością - w końcu korzystają ze stat(), ale... wyszło że is_file(), działa szybciej (minimalnie, ale zawsze coś).
Może to się tyczy tego, że is_file() sprawdza czy istnieje i czy jest plikiem / symlinkiem do pliku, a nie czy jest też katalogiem / symlinkiem do katalogu.. ale to takie gdybanie z mojej strony.
Zresztą - odczuwalna różnica, jest dopiero wtedy gdy nie używamy clearstatcache().
BTW. po co w autoloaderze file_exists()? Przecież ważne jest czy istnieje plik w podanej ścieżce. Jak ktoś ci zapoda katalog o nazwie pliku klasy to się zdziwisz :D
Aż sobie powtórzyłem test (10000 iteracji per metoda):
Winda (maszyna stacjonarna):
Plik istnieje, clearstatcache() po kazdej iteracji
file_exists(): 1.3320s
is_file(): 1.3752s
Plik nie istnieje, clearstatcache() po kazdej iteracji
file_exists(): 1.2330s
is_file(): 1.2322s
Plik istnieje, bez clearstatcache() po kazdej iteracji
file_exists(): 1.3667s
is_file(): 1.3481s
Plik nie istnieje, bez clearstatcache() po kazdej iteracji
file_exists(): 1.2236s
is_file(): 1.2247s
Linuch (serwer, gdzieś tam w polsce):
Plik istnieje, clearstatcache() po kazdej iteracji
file_exists(): 0.1055s
is_file(): 0.1053s
Plik nie istnieje, clearstatcache() po kazdej iteracji
file_exists(): 0.1020s
is_file(): 0.1020s
Plik istnieje, bez clearstatcache() po kazdej iteracji
file_exists(): 0.1043s
is_file(): 0.1041s
Plik nie istnieje, bez clearstatcache() po kazdej iteracji
file_exists(): 0.1020s
is_file(): 0.1016s
Z testu winika, że mam wolny komputer a nawyk może zostać :D
Michał Wachowski edytował(a) ten post dnia 14.12.10 o godzinie 19:08