博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
黄聪:is_file和file_exists效率比较
阅读量:5976 次
发布时间:2019-06-20

本文共 1650 字,大约阅读时间需要 5 分钟。

目前在弄文件缓存的时候用到了判定文件存在与否,is_file()还是file_exists()呢?is_file和file_exists两者效率比较起来,谁的运行速度更快呢?还是做个测试吧:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?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
);
}
?>

测试结果:

当文件存在时:

运行1万次:
is_file–>0.0067121982574463
file_exits–>0.11532402038574

运行10万次:

is_file–>0.069056034088135
file_exits–>1.1521670818329

当运行100万次:

is_file–>0.6924250125885
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_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

文章乃参考、转载其他博客所得,仅供自己学习作笔记使用!!!
 
转自:http://www.cnblogs.com/xuan52rock/p/4548635.html

转载于:https://www.cnblogs.com/huangcong/p/7744439.html

你可能感兴趣的文章
我是LinkedIn的SRE,我把LinkedIn搞挂了
查看>>
阿里重磅发布大规模图神经网络平台AliGraph,架构算法解读
查看>>
Scrum联盟发布《2016年度Scrum状态调查报告》
查看>>
搞容器,必须考虑这五大安全要素
查看>>
MongoDB Mobile Sync for iOS推出Beta版本
查看>>
Bruck:一个Web界面布局原型设计框架\n
查看>>
Micronaut教程:如何使用基于JVM的框架构建微服务
查看>>
360首席安全官谭晓生宣布离职
查看>>
厚积薄发,看腾讯云如何快速从IPv4向IPv6演进?
查看>>
GitLab公布关于开发者趋势的问卷调查结果
查看>>
准备好了?测试人员迟早会被要求测试包含区块链技术的解决方案
查看>>
IBM发表论文:可能已找到处理量子计算退相干的方法
查看>>
WCF与ASP.NET Core性能比较
查看>>
访谈Stuart Davidson:Skyscanner的持续交付推广
查看>>
一地鸡毛 OR 绝地反击,2019年区块链发展指南
查看>>
QLoo推出用于现有服务的GraphQL接口
查看>>
从Java到Spring为何独得青睐Spring Summit 2017不可不知的那些事儿
查看>>
取代Python多进程!伯克利开源分布式框架Ray
查看>>
百度举办第七届技术开放日,揭秘春晚红包技术支撑
查看>>
Oracle宣布提供新的Java支持价格体系
查看>>