Поскольку include
будет оценивать содержимое файлов, например, запустить через интерпретатор PHP, а также использовать include_path для поиска файлов, я бы сказал, include
медленнее. file_get_contents
будет просто обрабатывать содержимое файла как строку. Меньше накладных расходов, больше скорости.
со страницы руководства :
file_get_contents () является предпочтительным способом чтения содержимого файла в строку. Он будет использовать методы отображения памяти, если они поддерживаются вашей ОС, для повышения производительности.
Однако, если вы выводите файл, а не помещаете его в строку, readfile()
даже немного быстрее file_get_contents
. Учитывая, что include
'также будет выводить любой контент, не относящийся к PHP, это, скорее всего, более вероятно, чем вы думаете после этого.
Пересмотренный тест на моем настольном компьютере:
$start1 = microtime(1);
for($i=0; $i<100000; $i++) {
include 'log.txt';
}
$end1 = microtime(1) - $start1;
и
$start2 = microtime(1);
for($i=0; $i<100000; $i++) {
echo file_get_contents('log.txt');
}
$end2 = microtime(1) - $start2;
и
$start3 = microtime(1);
for($i=0; $i<100000; $i++) {
readfile('log.txt');
}
$end3 = microtime(1) - $start3;
Результат
echo PHP_EOL, $end1, // 137.577358961
PHP_EOL, $end2, // 136.229552984
PHP_EOL, $end3; // 136.849179029