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

Всё ещё используете 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

Кроме того, что анонимные функции удобней, они ещё и быстрее.
Теги:
Yii, anonymous function, eval, CGridView
Добавлено: 20 Мая 2018 07:37:39 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...