Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 路径信息vs fnmatch_Php_Benchmarking_Pathinfo_Fnmatch - Fatal编程技术网

Php 路径信息vs fnmatch

Php 路径信息vs fnmatch,php,benchmarking,pathinfo,fnmatch,Php,Benchmarking,Pathinfo,Fnmatch,关于fnmatch在pathinfo上的速度有一个小的争论: 我并不完全相信,所以决定对这两个函数进行基准测试 使用动态和静态路径表明pathinfo速度更快 我的基准逻辑和结论有效吗 编辑:从cmd使用mac php PHP 5.3.0(cli)(构建日期:2009年7月20日) 13:56:33)版权所有(c)1997-2009 PHP Group Zend Engine v2.3.0, 版权所有(c)1998-2009 Zend 技术 动态路径路径信息3.2973630428314 fnm

关于fnmatch在pathinfo上的速度有一个小的争论:

我并不完全相信,所以决定对这两个函数进行基准测试

使用动态和静态路径表明pathinfo速度更快

我的基准逻辑和结论有效吗

编辑:从cmd使用mac php

PHP 5.3.0(cli)(构建日期:2009年7月20日) 13:56:33)版权所有(c)1997-2009 PHP Group Zend Engine v2.3.0, 版权所有(c)1998-2009 Zend 技术

动态路径路径信息3.2973630428314 fnmatch 3.4520659446716 x1.05

静态路径路径信息0.86487698554993 fnmatch 1.0420439243317 x1.2

来自cmd的mac-xampp-php

PHP 5.3.1(cli)(构建日期:2010年2月27日) 12:41:51)版权所有(c)1997-2009 PHP Group Zend Engine v2.3.0, 版权所有(c)1998-2009 Zend 技术

动态路径路径信息3.63922715187 fnmatch 4.99041700363 x1.37

静态路径路径信息1.03110480309 fnmatch 2.38929820061 x2.32

我在我的机器上包含100000次迭代的结果示例(以秒为单位):

dynamic path
pathinfo 3.79311800003
fnmatch 5.10071492195
x1.34

static path
pathinfo 1.03921294212
fnmatch 2.37709188461
x2.29
<pre>
<?php

$iterations=100000;

// Benchmark with dynamic file path
print("dynamic path\n");

$i=$iterations;
$t1=microtime(true);
while($i-->0){
    $f='/'.uniqid().'/'.uniqid().'/'.uniqid().'/'.uniqid().'.php';
    if(pathinfo($f,PATHINFO_EXTENSION)=='php') $d=uniqid();
}
$t2=microtime(true) - $t1;

print("pathinfo $t2\n");

$i=$iterations;
$t1=microtime(true);
while($i-->0){
    $f='/'.uniqid().'/'.uniqid().'/'.uniqid().'/'.uniqid().'.php';
    if(fnmatch('*.php',$f)) $d=uniqid();
}
$t3 = microtime(true) - $t1;

print("fnmatch $t3\n");

print('x'.round($t3/$t2,2)."\n\n");

// Benchmark with static file path
print("static path\n");

$f='/'.uniqid().'/'.uniqid().'/'.uniqid().'/'.uniqid().'.php';

$i=$iterations;
$t1=microtime(true);
while($i-->0) if(pathinfo($f,PATHINFO_EXTENSION)=='php') $d=uniqid();
$t2=microtime(true) - $t1;

print("pathinfo $t2\n");

$i=$iterations;
$t1=microtime(true);
while($i-->0) if(fnmatch('*.php',$f)) $d=uniqid();
$t3=microtime(true) - $t1;

print("fnmatch $t3\n");

print('x'.round($t3/$t2,2)."\n\n");

?>
</pre>
代码:


我的结果与你的相反:

PHP 5.3.0 (cli) (built: Jun 29 2009 21:25:23)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies
版本

PHP 5.3.2 (cgi-fcgi) (built: Mar  3 2010 20:47:00)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
with Zend Debugger v5.3, Copyright (c) 1999-2010, by Zend Technologies
用你的

dynamic path
pathinfo 3.4931519031525
fnmatch 2.8633069992065
x0.82

static path
pathinfo 0.83261299133301
fnmatch 0.28636598587036
x0.34
给予

这四个

for($i=0;$i<10000;$i++) hasExtension1('php', __FILE__);
for($i=0;$i<10000;$i++) hasExtension2('php', __FILE__);
for($i=0;$i<10000;$i++) hasExtension3('php', __FILE__);
for($i=0;$i<10000;$i++) hasExtension4('php', __FILE__);
当你像这样跑的时候

Average Mean Time = 0.000007
Average Mean Time = 0.000006
Average Mean Time = 0.000005
Average Mean Time = 0.000003

我觉得4号跑得最快有点烦人,但它就是这么说的。而且每次通话0.00000n秒也没什么麻烦的。

使用相同的基准代码

dynamic path
pathinfo 4.9078891277313
fnmatch 4.3466200828552
x0.89

static path
pathinfo 1.4787950515747
fnmatch 0.98351812362671
x0.67

我将把我的结果放在这里:

但请记住我对您链接到的问题的最初评论:

关于速度,比赛将被淘汰 用于时执行pathinfo 2:1 这个目的


特定于特定扩展上的分支。

我对所有答案都投了赞成票,但将回答我自己的问题

我的基准逻辑和结论是有效的,所有答案基准都是有效的

我已经找到了原因,这又提出了另一个问题,但我想让这篇文章偏离正轨,变得更长,我将开始另一个问题。完成后,我会将新链接放在这里

谢谢你为我做基准测试


编辑:这是第2部分的问题:

应该是CW,因为这不是一个真正的问题,我猜这是一个真正的问题!为什么其他人会得出不同的结论?你进行了多少次测试?在多任务机器上,一些任务可能会被延迟,使通常更快的部分代码变慢。我已经运行了很多次,得到了相同的结果。。。我已经用命令行的结果更新了我的帖子。
Average Mean Time = 0.000007
Average Mean Time = 0.000006
Average Mean Time = 0.000005
Average Mean Time = 0.000003
dynamic path
pathinfo 2.6542711257935
fnmatch 1.9943950176239
x0.75

static path
pathinfo 1.1711349487305
fnmatch 0.54186105728149
x0.46

PHP Version 5.3.1
Build Date  Nov 20 2009 17:20:57
Compiler    MSVC6 (Visual C++ 6.0)
Architecture    x86
Thread Safety   enabled
Zend Memory Manager enabled
Zend Multibyte Support  disabled
dynamic path
pathinfo 4.9078891277313
fnmatch 4.3466200828552
x0.89

static path
pathinfo 1.4787950515747
fnmatch 0.98351812362671
x0.67