<rmcreative>

RSS

Все заметки с тегами «php, anonymous function»

Можно уточнить:

  1. Скорость eval и анонимных функций

    11 февраля 2012

    Всё ещё используете eval там, где его можно не использовать? Вот ещё одна причина посмотреть в сторону PHP 5.3 и анонимных функций:

    $count = 50;
    $start = microtime(true);
    $y = 0;
    for($i = 0; $i < $count; $i++)
    {
        eval('++$y;');
    }
     
    printf("#1, result is %d, done in %f\n", $y, microtime(true) - $start);
     
    $start = microtime(true);
    $y = 0;
    for($i = 0; $i < $count; $i++)
    {
        $f = function() use (&$y)
        {
            return ++$y;
        };
        $f();
    }
     
    printf("#2, result is %d, done in %f\n", $y, microtime(true) - $start);

    На выходе получаем:

    d:\src>php callback_performance.php
    #1, result is 50, done in 0.000415
    #2, result is 50, done in 0.000270
     
    d:\src>php callback_performance.php
    #1, result is 50, done in 0.000413
    #2, result is 50, done in 0.000261
     
    d:\src>php callback_performance.php
    #1, result is 50, done in 0.000412
    #2, result is 50, done in 0.000273

    Кроме того, что анонимные функции удобней, они ещё и быстрее.

    12 комментариев
  2. Рекурсивные анонимные функции PHP

    1 июня 2011

    // считаем факториал
    $fact = function($n) use (&$fact)
    {
        if($n==1)
            return 1;
     
        return $fact($n-1)*$n;
    };
    echo $fact(5); // =120
    25 комментариев