сделал несколько тестов:
array_gen.php:
<?
echo '<?
$a = 432;
$hash = array(
';
for($i = 0; $i < 10000; $i++) echo "$i => $i,\n";
echo ');
echo $hash[$a];
';
switch_gen.php:
<?
echo '<?
$a = 432;
switch($a) {
';
for($i = 0; $i < 10000; $i++) echo "case $i: echo $i; break;\n";
echo '}';
Тогда:
php array_gen.php > array_.php
php switch_gen.php > switch.php
time tcsh -c 'repeat 1000 php array.php > /dev/null'
19.297u 4.791s 0:25.16 95.7%
time tcsh -c 'repeat 1000 php switch.php > /dev/null'
25.081u 5.543s 0:31.66 96.7%
Затем я изменил цикл:
for($i = 'a'; $i < 'z'; $i++)
for($j = 'a'; $j < 'z'; $j++)
for($k = 'a'; $k < 'z'; $k++)
Для создания 17576 трехбуквенных комбинаций.
time tcsh -c 'repeat 1000 php array.php > /dev/null'
30.916u 5.831s 0:37.85 97.0%
time tcsh -c 'repeat 1000 php switch.php > /dev/null'
36.257u 6.624s 0:43.96 97.5%
Метод массива выигрывает каждый раз, даже если вы включили время установки. Но не очень. Поэтому я думаю, что проигнорирую эту оптимизацию и пойду с тем, что проще.