анонимная производительность функции в PHP [закрыто]

Я начинаю использовать парадигмы функционального программирования в php и задавался вопросом, каковы последствия для производительности. Некоторые гуглят, кажется, просто говорят, что есть некоторые. Чтобы быть конкретным, я хотел бы знать:

  • есть ли на самом деле влияние производительности или это городская легенда?
  • каково влияние на производительность (надеюсь, кто-то, кто сделал контрольные показатели)?
  • что вызывает это воздействие (если оно существует)?
  • это фиксированная стоимость, или за казнь?

любые ресурсы, которые у вас есть, будут очень признательны:)

спасибо заранее

1 ответов


я провел некоторое тестирование с помощью array_map (), вызвав его с помощью:

  1. имя функции (array_map('test', $myArray);)
  2. переменная, содержащая закрытия (array_map($test, $myArray);)
  3. закрытие (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() значительно медленнее.