目前在弄文件缓存的时候用到了断定文件存在与否,is_file()仍是file_exists()呢?is_file和file_exists二者效率比较起来,谁的运行速度更快呢?仍是作个测试吧:php
<?php $start_time = get_microtime(); for($i=0;$i<10000;$i++)//默认1万次,可手动修改 { if(is_file('test.txt')) { //do nothing; } } echo 'is_file-->'.(get_microtime() - $start_time).'<br>'; $start_time = get_microtime(); for($i=0;$i<10000;$i++)//默认1万次,可手动修改 { if(file_exists('test.txt')) { //do nothing; } } echo 'file_exits-->'.(get_microtime() - $start_time).'<br>'; function get_microtime()//时间 { list($usec, $sec) = explode(' ', microtime()); return ((float)$usec + (float)$sec); } ?>
|
当文件存在时:html
运行1万次:缓存
is_file–>0.0067121982574463函数
file_exits–>0.11532402038574测试
运行10万次:spa
is_file–>0.069056034088135code
file_exits–>1.1521670818329htm
当运行100万次:ci
is_file–>0.6924250125885get
file_exits–>11.497637987137
当文件不存在时:
运行1万次:
is_file–>0.72184419631958
file_exits–>0.71474003791809
运行10万次:
is_file–>7.1535291671753
file_exits–>7.0911409854889
当运行100万次:
is_file–>72.042867183685
file_exits–>71.789203166962
超过1分钟了,别忘了在php第一行加句:
set_time_limit(120);//时间限制120秒
is_file()和file_exists()效率比较,结果当文件存在时,is_file函数比file_exists函数速度快14倍,当文件不存在时,二者速度至关。同理,当文件目录存在时,is_dir()比file_exists()快18倍。不存在时二者效率至关。PHP的file_exists = is_dir + is_file。
* 若是要判断目录是否存在,请优先考虑函数 is_dir(directory)
* 若是要判断文件是否存在,请优先考虑函数 is_file(filepath)
当目录存在时,运行1万次
is_dir–>0.0058560371398926
file_exits–>0.11063098907471
当目录不存在时,运行1万次
is_dir–>0.7159481048584
file_exits–>0.71305584907532