连接器或PHP本机函数哪个更快

时间:2019-07-17 03:18:21

标签: php

当我想获取字符串的一些位子

$str = 'abcd' ; 大多数人使用 substr ( $str, 0, 2 ) ; 为什么不 $prefix = $str[0] . $str[1] ;

4 个答案:

答案 0 :(得分:2)

同时运行两个功能100.000次以获得合理可接受的测量结果:

<?php

$str = 'abcd';

$before = microtime(true);

for ($i=0 ; $i<100000 ; $i++) {
    substr($str, 0, 2);
}

$after = microtime(true);

echo ($after-$before)/$i . " sec/substr\n";

$before = microtime(true);

for ($i=0 ; $i<100000 ; $i++) {
    $str[0] . $str[1] ;
}

$after = microtime(true);

echo ($after-$before)/$i . " sec/concatenate\n";

?>

产生以下结果:

  

4.8739910125732E-8秒/ substr
  5.666971206665E-8秒/连接

多次运行它会产生平均0.3到0.6秒的差异,其中substr()比串联快。我想这与以下事实有关:substr()仅需要一个操作,而$str[0] . $str[1]需要3个操作(获取值和并置本身)。我怀疑差异会根据所需的操作量而增加。

答案 1 :(得分:1)

如何保持活力? :D

echo implode(" ", $Arrayofstrings );

答案 2 :(得分:1)

要查看更快的速度,只需搜索基准:

获胜者是substr,这是此类操作中最快的功能。

Test: substr($var, 5, 1) vs. isset && {5}

Complete Test Menu

答案 3 :(得分:1)

PHP 5

substr比连接器慢,如果您想要最快的执行方法,那就是

"$str[0]$str[1]"

PHP 7

PHP7中的JIT和调用转换得到了优化,因此对substr的调用比PHP5中的调用快得多