Ответ 1
Я провел некоторое тестирование с помощью array_map(), называя его:
- Имя функции (
array_map('test', $myArray);
) - Переменная, содержащая замыкание (
array_map($test, $myArray);
) - Закрытие (
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
Это приводит к тем же выводам. В этом комментарии вы также видите, что create_function()
значительно медленнее.