PHP中的匿名函数性能

时间:2011-12-30 06:39:14

标签: php functional-programming php-5.3 anonymous-function

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

  • 是否存在性能影响还是城市传奇?
  • 对性能产生什么影响(希望有人做过基准测试)?
  • 造成这种影响的原因(如果存在)?
  • 是固定成本还是每次执行?

你们所拥有的任何资源都将不胜感激:)

提前致谢

1 个答案:

答案 0 :(得分:18)

我使用array_map()进行了一些测试,用以下方法调用它:

  1. 函数的名称(array_map('test', $myArray);
  2. 包含闭包(array_map($test, $myArray);
  3. 的变量
  4. 一个闭包(array_map(function{}(), $myArray);
  5. 在所有三种情况下,该函数都为空(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()明显变慢。