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