Редактировать: я написал скрипт на PHP. Я только заметил, что в нем была явная ошибка, означающая, что время выполнения в лучшем случае вычислялось неправильно (страшно, что никто не заметил!)
Лучший случай просто превосходит прямое назначение, но худший случай на намного хуже , чем простое назначение. Назначение, вероятно, является самым быстрым с точки зрения реальных данных.
Выход:
- назначение за 0,0119960308075 секунд
- Сравнение наихудшего случая за 0,0188510417938 секунд
- лучшее сравнение случаев за 0,0116770267487 секунд
Код:
<?php
$arr = array();
$mtime = explode(" ", microtime());
$starttime = $mtime[1] + $mtime[0];
reset_arr($arr);
for ($i=0;$i<10000;$i++)
$arr[i] = true;
$mtime = explode(" ", microtime());
$firsttime = $mtime[1] + $mtime[0];
$totaltime = ($firsttime - $starttime);
echo "assignment in ".$totaltime." seconds<br />";
reset_arr($arr);
for ($i=0;$i<10000;$i++)
if ($arr[i])
$arr[i] = true;
$mtime = explode(" ", microtime());
$secondtime = $mtime[1] + $mtime[0];
$totaltime = ($secondtime - $firsttime);
echo "worst case comparison in ".$totaltime." seconds<br />";
reset_arr($arr);
for ($i=0;$i<10000;$i++)
if (!$arr[i])
$arr[i] = false;
$mtime = explode(" ", microtime());
$thirdtime = $mtime[1] + $mtime[0];
$totaltime = ($thirdtime - $secondtime);
echo "best case comparison in ".$totaltime." seconds<br />";
function reset_arr($arr) {
for ($i=0;$i<10000;$i++)
$arr[$i] = false;
}