由于include
将评估文件的内容,例如,通过PHP解释器运行,并使用include_path查找文件,我会说include
更慢。 file_get_contents
只会将文件的内容视为字符串。更少的开销,更快的速度。
从manual page:
file_get_contents()函数是要读取的文件的内容转换成字符串的首选方式。如果您的操作系统支持,它将使用内存映射技术来提高性能。
但是,如果你是输出的,而不是得到它转换成字符串的文件后,readfile()
即使是一点点比file_get_contents
更快。鉴于include
'ing也会输出任何非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
而且更快,更内存占用那么人们说短标签没有问题... –
是的,我讨厌shortags,似乎太容易触发像意外的PHP上面的例子。 –
这对于二进制存储而言非常尖锐。如何压缩文件进行存储并将其解压缩到内存中?或者,如果您正在缓存整个响应,则发送压缩副本?这将避免短标签。就我个人而言,当我到达php.ini时,我会关闭短标签。 – TheJacobTaylor