Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

anonymous function performance in PHP [closed]

I'm starting to use functional programming paradigms in php and was wondering what the performance impacts are. Some googling just seems to say that there are some. To be specific, I would like to know:

  • Is there actually a performance impact or is it an urban legend?
  • What is the performance impact (hopefully someone out that has done benchmarks)?
  • What causes this impact (if one exists)?
  • Is it fixed cost, or per execution?

Any resources you guys have would be greatly appreciated :)

Thanks in advance

like image 818
Alex M Avatar asked Dec 30 '11 06:12

Alex M


1 Answers

I did some testing with array_map(), calling it with:

  1. The name of a function (array_map('test', $myArray);)
  2. A variable that contains a closure (array_map($test, $myArray);)
  3. A closure (array_map(function{}(), $myArray);)

In all three cases, the function was empty (function test(){})

The results for an array with 1.000.000 items ($myArray = range(1,1000000);)

Function: 0.693s
Variable:0.703s
Closure: 0.694s

For an array of 10.000.000 items, the results are this:

Function: 8.913s
Variable: 8.169s
Closure: 8.117s

So in neither case do we have much overhead, if any.

Also see the 4th comment on http://fabien.potencier.org/article/17/on-php-5-3-lambda-functions-and-closures It comes to the same conclusions. In that comment, you also see that create_function() is significantly slower.

like image 164
Jory Geerts Avatar answered Sep 21 '22 06:09

Jory Geerts