php中is_file與file_exists的性能對比

從字面上看,判斷一個文件是否存在理應使用 file_exists() 函數,但事實上,使用 is_file() 函數也可以達到同樣的效果,如果文件不存在,那麼 is_file() 肯定返回 false。

但是, 這兩個函數的性能可不一樣, is_file() 比 file_exists() 會快點。

如果要檢查的文件存在,那麼is_file() 比 file_exists() 快很多倍,但如果文件不存在,則兩者差不多。

以下是測試的結果,第一個測試是文件存在的,第二個是文件不存在的:


第一次測試,文件存在

<?php
// 運行 file_exists 10000 次
$time = microtime();
$time = explode(' ', $time);
$begintime = $time[1] + $time[0];
for($i=0;$i<10000;$i++)
    file_exists('/Users/Jacky');         // 文件存在
$time = microtime();
$time = explode(" ", $time);
$endtime = $time[1] + $time[0];
$totaltime = ($endtime - $begintime);
echo '運行file_exists 10000 次所花時間: ' .$totaltime. ' 秒'.PHP_EOL;


// 運行 is_file 10000 次
$time = microtime();
$time = explode(" ", $time);
$begintime = $time[1] + $time[0];
for($i=0;$i<10000;$i++)
    is_file('/Users/Jacky');
$time = microtime();
$time = explode(" ", $time);
$endtime = $time[1] + $time[0];
$totaltime = ($endtime - $begintime);
echo '運行 is_file 10000 次所花時間: ' .$totaltime. ' 秒.'.PHP_EOL;

結果:



第二次測試,文件不存在

<?php
// 運行 file_exists 10000 次
$time = microtime();
$time = explode(' ', $time);
$begintime = $time[1] + $time[0];
for($i=0;$i<10000;$i++)
    file_exists('/Users/Jackys');         // 文件不存在
$time = microtime();
$time = explode(" ", $time);
$endtime = $time[1] + $time[0];
$totaltime = ($endtime - $begintime);
echo '運行file_exists 10000 次所花時間: ' .$totaltime. ' 秒'.PHP_EOL;


// 運行 is_file 10000 次
$time = microtime();
$time = explode(" ", $time);
$begintime = $time[1] + $time[0];
for($i=0;$i<10000;$i++)
    is_file('/Users/Jackys');
$time = microtime();
$time = explode(" ", $time);
$endtime = $time[1] + $time[0];
$totaltime = ($endtime - $begintime);
echo '運行 is_file 10000 次所花時間: ' .$totaltime. ' 秒.'.PHP_EOL;

結果:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章