我开始在php中使用函数式编程范例,想知道对性能的影响是什么。一些谷歌搜索似乎只是说有一些。具体来说,我想知道:
- 是真的有性能影响还是都市传说? 性能影响是什么(希望有人做过基准测试)?
- 是什么导致了这种影响(如果存在的话)?
- 是固定成本,还是每次执行?
如果你们有任何资源,我将不胜感激:)
Thanks in advance
我用array_map()做了一些测试,用:
- 函数名(
array_map('test', $myArray);
) - 包含闭包(
array_map($test, $myArray);
)的变量 A闭包(
array_map(function{}(), $myArray);
)在所有三种情况下,函数为空(function test(){}
)
包含1,000.000个元素的数组($myArray = range(1,1000000);
)的结果
Function: 0.693s
Variable:0.703s
Closure: 0.694s
对于一个包含10.000.000个元素的数组,结果如下:
Function: 8.913s
Variable: 8.169s
Closure: 8.117s
所以在这两种情况下,我们都没有太多的开销,如果有的话。
请参阅http://fabien.potencier.org/article/17/on-php-5-3-lambda-functions-and-closures上的第4条评论得出了同样的结论。在这条评论中,您还可以看到create_function()
明显更慢。