Встала задача при поиске работать с многомерными массивами слепками таблиц из БД. Иногда стали появлятся многоэтажные переменные типа $a[4][54][$b];
Решил протестить, как быстрее будет робить скрипт со введенными промежуточными переменными или при работе напрямую.
Вот скрипт:
$i=0;
do
{
// 1. Обрабатываем напрямую
$a[]=array('a'=>1,'b'=>2,'c'=>3);
$b[$a['a']]=array('d'=>4,'e'=>5,'f'=>6);
$c[$b[$a['a']]['f']]=array('g'=>7,'h'=>8,'k'=>9);
$n=rand($c[$b[$a['a']]['f']]['g'],$c[$b[$a['a']]['f']]['k']);
// 2. Вводим дополнительные переменные
/* $a[]=array('a'=>1,'b'=>2,'c'=>3);
$a2=$a['a'];
$b[$a2]=array('d'=>4,'e'=>5,'f'=>6);
$b2=$b[$a2]['f'];
$c[$b2]=array('g'=>7,'h'=>8,'k'=>9);
$c2=$c[$b2]['g'];
$c3=$c[$b2]['k'];
$n=rand($c2,$c3);*/
$i++;
}while($i<100000);
echo $n;
Вот какие результаты:
1: 0.495 - 0.498 сек.
2: 0.319 - 0.322 сек.
Вывод: лучше не писать многосоставные переменные. :)
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.