PHP匿名函数的性能


anonymous function performance in PHP

我开始在php中使用函数式编程范例,想知道对性能的影响是什么。一些谷歌搜索似乎只是说有一些。具体来说,我想知道:

  • 是真的有性能影响还是都市传说?
  • 性能影响是什么(希望有人做过基准测试)?
  • 是什么导致了这种影响(如果存在的话)?
  • 是固定成本,还是每次执行?

如果你们有任何资源,我将不胜感激:)

Thanks in advance

我用array_map()做了一些测试,用:

  1. 函数名(array_map('test', $myArray);)
  2. 包含闭包(array_map($test, $myArray);)的变量
  3. 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()明显更慢。