is_file() 與 file_exist()速度比較

is_file和file_exists效率比較

目前在弄文件緩存的時候用到了斷定文件存在與否,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)

 

is_dir()對比file_exists()測試結果:

 

當目錄存在時,運行1萬次

is_dir–>0.0058560371398926

file_exits–>0.11063098907471

當目錄不存在時,運行1萬次

is_dir–>0.7159481048584

file_exits–>0.71305584907532

相關文章
相關標籤/搜索