好吧,就像所有“现实生活中可能更快”的问题一样,您无法击败现实生活中的考验。
function timeFunc($function, $runs){ $times = array(); for ($i = 0; $i < $runs; $i++) { $time = microtime(); call_user_func($function); $times[$i] = microtime() - $time; } return array_sum($times) / $runs;}function Method1(){ $foo = 'some words'; for ($i = 0; $i < 10000; $i++) $t = "these are $foo";}function Method2(){ $foo = 'some words'; for ($i = 0; $i < 10000; $i++) $t = "these are {$foo}";}function Method3() { $foo = 'some words'; for ($i = 0; $i < 10000; $i++) $t = "these are " . $foo;}print timeFunc('Method1', 10) . "n";print timeFunc('Method2', 10) . "n";print timeFunc('Method3', 10) . "n";进行几次运行以分页显示所有内容,然后…
0.0035568
0.0035388
0.0025394
因此,正如预期的那样,插值实际上是相同的(噪声级别差异,可能是由于插值引擎需要处理的额外字符)。直接串联的速度约为速度的66%,这并不是很大的冲击。插值分析器将查找,无所事事,然后以简单的内部字符串concat完成。即使concat非常昂贵,在
完成 所有工作以解析出变量并修剪/复制原始字符串 之后 ,插值器仍将必须这样做。
Somnath更新:
我将Method4()添加到上述实时逻辑中。
function Method4() { $foo = 'some words'; for ($i = 0; $i < 10000; $i++) $t = 'these are ' . $foo;}print timeFunc('Method4', 10) . "n";Results were:0.00147390.00155740.00119550.001169当您只声明一个字符串而又不需要解析该字符串时,为什么还要混淆PHP调试器来解析。我希望你明白我的意思。



