Всё ещё используете 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
Кроме того, что анонимные функции удобней, они ещё и быстрее.