анонимная производительность функции в PHP [закрыто]
Я начинаю использовать парадигмы функционального программирования в php и задавался вопросом, каковы последствия для производительности. Некоторые гуглят, кажется, просто говорят, что есть некоторые. Чтобы быть конкретным, я хотел бы знать:
- есть ли на самом деле влияние производительности или это городская легенда?
- каково влияние на производительность (надеюсь, кто-то, кто сделал контрольные показатели)?
- что вызывает это воздействие (если оно существует)?
- это фиксированная стоимость, или за казнь?
любые ресурсы, которые у вас есть, будут очень признательны:)
спасибо заранее
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
так ни в том, ни в другом случае у нас нет больших накладных расходов, если таковые имеются.
см. также 4 комментария на http://fabien.potencier.org/article/17/on-php-5-3-lambda-functions-and-closures
Он приходит к тем же выводам. В этом комментарии вы также видите, что create_function()
значительно медленнее.