substr或strlen-哪种性能最好?PHP

substr或strlen-哪种性能最好?PHP,php,substr,strlen,Php,Substr,Strlen,我需要对多个变量进行检查,其中一些变量是URL,另一些变量只包含不超过5或6个字符,其中没有一个是http 以下两种方法中哪一种在速度和处理器负载方面提供最佳性能 $str = 'http://somereallylongwebaddress.com'; if (substr( $str, 0, 4 ) === "http") { // true } if (strlen( $str >= 7 )) { // true } 编辑 对于其他感兴趣的人,我发现了这个可以运

我需要对多个变量进行检查,其中一些变量是URL,另一些变量只包含不超过5或6个字符,其中没有一个是http

以下两种方法中哪一种在速度和处理器负载方面提供最佳性能

$str = 'http://somereallylongwebaddress.com';

if (substr( $str, 0, 4 ) === "http") {
    // true
}

if (strlen( $str >= 7 )) {
    // true
}
编辑
对于其他感兴趣的人,我发现了这个可以运行各种不同函数的实时比较。它并没有针对我的特殊问题,但仍然提供了非常丰富的信息

您可以通过执行以下操作来计时PHP中任何代码的性能:

$msc = microtime(true);
// YOUR CODE
$msc = microtime(true)-$msc;
echo $msc;

您可以在下面的任何在线php编辑器中使用不同的输入运行以下代码,并观察速度性能


基于以上代码片段的多个结果,substr在速度方面表现出了更好的性能。就处理器负载而言,需要比较每个函数的汇编代码。

您知道这两个语句测试的内容完全不同,对吗?我怀疑斯特伦更快,但它应该很容易测试。你自己做过基准测试吗?是的,我知道他们都做什么,只是问在这个用例中哪一个更有效。不,我还没有对其进行基准测试,不确定如何进行测试,这就是我为什么要问的问题。您编写的代码使用两种方法,每种方法都在一个循环中,并对每种方法的性能进行计时,以便对其进行比较。Ken White说了什么。但与程序的其他部分相比,性能差异可能可以忽略不计。过早优化是万恶之源。这里的答案是,真的,它真的不重要。您花在这方面的时间比服务器运行20年所节省的时间还要多。我刚刚对它进行了测试——这两位代码的1000万次执行分别需要0.6秒和0.4秒,这是在我速度相当慢的笔记本电脑上完成的。因此,过早地进行优化。运行每个命令一次绝对不会告诉你什么。至少应该在循环中多次运行比较。理想情况下,您还应该测试各种输入,包括匹配和不匹配。
<?php
$before = microtime(true);
$str = "http";
if (substr( $str, 0, 4 ) === "http") {
    // true
}
echo "strlen performance ";
echo "Time:  " . number_format(( microtime(true) - $before), 8) . " Seconds\n";

echo "\r\n";

$before = microtime(true);
if (strlen($str >= 4)) {
    // true
}
echo "substr performance ";
echo "Time:  " . number_format(( microtime(true) - $before), 8) . " Seconds\n";
echo "\r\n";
?>