file vs file_get_contents vs fopen vs SplFileObject php
Сегодня проведу тестирование на предмет: как быстрее всего открыть файл в php и считать его в строку. Есть методы быстрее, которые сразу отдают файл на страницу, но я ими не пользуюсь. Тестирование буду проводить по отдельности, чтоб уберечься от файлового кэша.. Сам здравомыслием раньше не пользовался, на практике не проверял, в инете где-то понаписано было про file круче ну и использовал implode('',file($file)). Конечно же есть мелкая погрешность из-за нагруженности дисковой системы, брал результат который появлялся чаще..
$file=' 22,7 kb '; $d1=file_get_contents($file); $h=fopen($file,'r'); $d2=fread($h,filesize($file)); fclose($h); $d3=implode('',file($file)); $d4=''; $h=fopen($file,'r'); while(!feof($h)) $d4.=fgets($h); fclose($h); $h=new SplFileObject($file,'r'); $d5=$h->fread($h->getSize()); $d6=''; $h=new SplFileObject($file,'r'); while(!$h->eof()) $d6.=$h->fgets(); $h=null;Компьютер:
№ | время | память | медленнее на | больше памяти на | ||
---|---|---|---|---|---|---|
1 file_get_contents | 0.000076 | 23.15 kb | 0 с. | 0 % | 0 kb | 0 % |
2 fopen fread | 0.000080 | 23.31 kb | +0.000004 с. | +5 % | +0.16 kb | +0.69 % |
3 implode file | 0.000203 | 23.25 kb | +0.000127 с. | +62.56 % | +0.1 kb | +0.43 % |
4 fopen fgets | 0.000255 | 23.28 kb | +0.000179 с. | +70.2 % | +0.13 kb | +0.56 % |
5 SplFileObject fread | 0.000282 | 23.31 kb | +0.000206 с. | +73.05 % | +0.16 kb | +0.69 % |
6 SplFileObject fgets | 0.000283 | 23.31 kb | +0.000207 с. | +73.14 % | +0.16 kb | +0.69 % |
№ | время | память | медленнее на | больше памяти на | ||
---|---|---|---|---|---|---|
1 file_get_contents | 0.000065 | 23.22 kb | 0 с. | 0 % | 0 kb | 0 % |
2 fopen fread | 0.000085 | 23.39 kb | +0.000020 с. | +23.53 % | +0.17 kb | +0.73 % |
3 implode file | 0.000207 | 23.33 kb | +0.000142 с. | +68.6 % | +0.11 kb | +0.47 % |
5 SplFileObject fread | 0.000255 | 23.39 kb | +0.000190 с. | +74.51 % | +0.17 kb | +0.73 % |
4 fopen fgets | 0.000277 | 23.36 kb | +0.000212 с. | +76.53 % | +0.14 kb | +0.6 % |
6 SplFileObject fgets | 0.000320 | 23.39 kb | +0.000255 с. | +79.69 % | +0.17 kb | +0.73 % |
Хвалёный SplFileObject, как и ожидалось, тормознее всего..