$7.49 .com domain with free InstantPage Website Builder$1.99 Web Hosting   捷飞网络官方淘宝店   Godaddy 优惠码
返回列表 发帖
分享到:




[应用&技术] 关于php函数 is_file和file_exists效率比较

目前在弄文件缓存的时候用到了判定文件存在与否,is_file()还是file_exists()呢?is_file和file_exists两者效率比较起来,谁的运行速度更快呢?还是做个测试吧:
; p3 u- j+ k: U
  1. <?php
  2. $start_time = get_microtime();
  3. for($i=0;$i<10000;$i++)//默认1万次,可手动修改
  4. {
  5. if(is_file('test.txt')) {
  6. //do nothing;
  7. }
  8. }
  9. echo 'is_file-->'.(get_microtime() - $start_time).'<br>';
  10. $start_time = get_microtime();
  11. for($i=0;$i<10000;$i++)//默认1万次,可手动修改
  12. {
  13. if(file_exists('test.txt')) {
  14. //do nothing;
  15. }
  16. }
  17. echo 'file_exits-->'.(get_microtime() - $start_time).'<br>';
  18. function get_microtime()//时间
  19. {
  20. list($usec, $sec) = explode(' ', microtime());
  21. return ((float)$usec + (float)$sec);
  22. }
  23. ?>
复制代码
( N% H! S: |! e5 v# a2 `4 A2 S
测试结果:
& B) a; ^" s# Q当文件存在时:8 p: z6 V, a; y$ ?( E% E5 b1 r9 L
2 @$ R9 `# c; L* k2 d3 i6 O4 o
运行1万次:1 I9 h' v& s3 ]8 E' R1 J
is_file–>0.0067121982574463: n+ `3 g: C& N. f
file_exits–>0.11532402038574) U9 u% V4 ]7 n( _/ y
0 E' g8 [$ q; Y- J0 W9 B1 J, r
运行10万次:; l5 p9 r' V+ t- I8 _/ J
is_file–>0.0690560340881352 U% g+ n2 L+ W. {
file_exits–>1.1521670818329
+ ^" a* F% _3 l1 d/ q6 x- j
$ h1 O9 N7 c/ u% g& P  o当运行100万次:# Q" j% p1 C4 q: L( p  D$ l
is_file–>0.6924250125885" V4 }2 C* F: U5 I7 F# b# t( {
file_exits–>11.497637987137: G9 t1 I8 C" E) f, [, Y6 H
! g; g$ _# d) i; B6 W' V* u. }
. t5 f$ ?  c( b7 x/ F# M0 e# i6 r
当文件不存在时:- c4 Z/ u! g3 P; c
2 E$ K% B( k7 j8 ^9 ?
运行1万次:/ ?1 D9 d6 U, k- e
is_file–>0.72184419631958
9 {9 @9 {, _% I* `( S) Q* nfile_exits–>0.71474003791809
9 y/ ~* U  n; a
& o; e% H2 \" N2 y5 W; W3 r运行10万次:
4 O) u3 |+ {/ A: p1 q* H( Yis_file–>7.1535291671753
# y' F4 J; L6 W2 K3 qfile_exits–>7.0911409854889
- p  U+ J8 N% q0 @6 m7 E  W& X3 {( u, G
当运行100万次:6 O0 H; k0 ?& P2 C6 b
is_file–>72.042867183685  v* h' W) x3 J. z3 V3 l$ s
file_exits–>71.789203166962/ d& J6 G0 F) T" R0 Y
0 q5 f1 X# O$ f3 f  w- O6 a3 n
超过1分钟了,别忘了在php第一行加句:$ C9 K, _2 T4 f7 {. a* c
set_time_limit(120);//时间限制120秒  d$ {0 j% `" X  c& y  b0 Y
结论:- t' S6 X9 F+ W
is_file()和file_exists()效率比较,结果当文件存在时,is_file函数比file_exists函数速度快14倍,当文件不存在时,两者速度相当。同理,当文件目录存在时,is_dir()比file_exists()快18倍。不存在时两者效率相当。PHP的file_exists = is_dir + is_file。
1 }9 R4 r! A$ L( g# i* 如果要判断目录是否存在,请优先考虑函数 is_dir(directory)
: c% g& x: c; x2 C- ]# O* 如果要判断文件是否存在,请优先考虑函数 is_file(filepath)
3 x& Z4 s0 c" K0 vis_dir()对比file_exists()测试结果:/ ]2 V1 \  s% B9 ~
0 R7 E+ y% h: C* i. l' [  S- P
当目录存在时,运行1万次
5 S% |3 A/ d' b1 y6 c  Ais_dir–>0.0058560371398926; K1 I7 E9 i3 ]* J* o! f* Z: R
file_exits–>0.110630989074717 f( J' M3 P3 g! h5 L( @3 P
- @$ c$ p  |0 g+ H% D4 J' v8 d
当目录不存在时,运行1万次
* B+ u) Z2 A5 _# D$ Nis_dir–>0.7159481048584. [6 |8 @1 N( t" u8 D6 |  s" R
file_exits–>0.71305584907532
! U8 q) k+ d' m6 \- r3 j% p, u9 w7 S2 _9 O0 h7 S- c3 z) i
参考:网络

美国VPS、域名代购:http://tu8l.taobao.com

返回列表
Namecheap
Namecheap.com - Cheap domain name registration, renewal and transfers - Free SSL Certificates - Web Hosting
互联网安全