近期在优化zf2的时候发现file_exits这个函数的占用的运行时间很多,后来经过测试发现file_exits和is_files函数在找不到文件的时候效率都是差不多,但是在能找到文件的情况下性能却有很大的区别。
测试代码
<?php
$st = microtime(true);
for($i = 0;$i<5000;$i++){
echo file_exists('./test/456.txt') ? "yes" : "no";
}
$et = microtime(true);
var_dump($et - $st);
<?php
$st = microtime(true);
for($i = 0;$i<5000;$i++){
echo is_file('./test/456.txt') ? "yes" : "no";
}
$et = microtime(true);
var_dump($et - $st);
能找到文件的情况下:
file_exits | is_files | |
第一次运行(s) | 0.5677011013031 | 0.0096311569213867 |
第二次运行(s) | 0.5873339176178 | 0.0094871520996094 |
第三次运行(s) | 0.55540180206299 | 0.0098371505737305 |
不能找到文件的情况下:
file_exits | is_files | |
第一次运行(s) | 0.19519805908203 | 0.19035410881042 |
第二次运行(s) | 0.20471596717834 | 0.21751189231873 |
第三次运行(s) | 0.20644211769104 | 0.18162488937378 |
结论:在不能加载文件的情况,两个函数的运行效率都是差不多的,但是如果能够正常加载程序的话,性能的差别就很大了。