Created
February 5, 2013 20:01
-
-
Save vanchelo/4717168 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$range = 200; //Размер массива | |
$run = 100; //Колличество поисков | |
$mode = isset($_GET['mode']) ? $_GET['mode'] : ''; | |
$time = 0; | |
$arr = getArr($range); //Создаем массив | |
for($i=$run; $i>0; $i--){ | |
$find = (mt_rand(0,1) ? 'несуществующий индекс' : array_rand($arr,1)); //Определяем какой индекс будем искать | |
switch($mode){ | |
case 1:{ | |
if($i==$run) echo '<h2>Проверка при помощи функции array_key_exists</h2>'; | |
$time += show( | |
microtime(true) | |
,$find | |
,(is_array($arr) && array_key_exists($find,$arr)) //Условие для проверки | |
); | |
break; | |
} | |
case 2:{ | |
if($i==$run) echo '<h2>Хитрый метод с использованием empty для проверки на пустое значение</h2>'; | |
$time += show( | |
microtime(true) | |
,$find | |
,(isset($arr[$find]) && is_scalar($arr[$find]) && (!empty($arr[$find]) || 0==$arr[$find])) //Условие для проверки | |
); | |
break; | |
} | |
case 3:{ | |
if($i==$run) echo '<h2>Проверяем создан ли элемент в массиве. Но не находим элементы со значением null</h2>'; | |
$time += show( | |
microtime(true) | |
,$find | |
,(isset($arr[$find])) | |
); | |
break; | |
} | |
case 4:{ | |
if($i==$run) echo '<h2>Хитрый метод с проверкой на пустое значение</h2>'; | |
$time += show( | |
microtime(true) | |
,$find | |
,(isset($arr[$find]) && is_scalar($arr[$find]) && ''!=$arr[$find]) //Условие для проверки | |
); | |
break; | |
} | |
case 4:{ | |
if($i==$run) echo '<h2>Проверяем создан ли элемент в массиве. Но не находим элементы со значением null</h2>'; | |
$time += show( | |
microtime(true) | |
,$find | |
,(isset($arr[$find]) && is_scalar($arr[$find]) && ''!=$arr[$find]) //Условие для проверки | |
); | |
break; | |
} | |
default:{ | |
echo '<h1 style="color:#a0a0a0">Для запуска теста используйте значение $_GET["mode"] от 1 до 4</h1>'; | |
$i = 0; | |
} | |
} | |
} | |
unset($i,$find); | |
$tmp = array(); | |
for($j=1; $j<=4; $j++){ | |
$tmp[] = '<a href="'.$_SERVER['PHP_SELF'].'?mode='.$j.'">'.$j.'</a>'; | |
} | |
echo "<p><u><em>Тесты:</em></u> ".implode(" | ",$tmp)."</p>"; | |
unset($tmp,$j); | |
if($time>0){ | |
echo sprintf('<h1>На <strong style="color:blue">%d</strong> запусков было потрачено <strong style="color:blue">%f</strong> сек.</h1>',$run,$time); | |
unset($run,$time); | |
if(count($arr) <= 2000){ | |
echo '<h2>Содержимое массива $arr</h2><pre>'; | |
var_export($arr); | |
echo "</pre>"; | |
} | |
unset($arr); | |
} | |
function getArr($range){ | |
$arrInt = range(0, $range); //Создаем массив array(0=>1, 1=>2 , 2=>3, ... (n-1)=>n); где n = $range | |
$arrNull = array_fill(0, $range, null); //Создаем массив с $range элементами значение которых null | |
return array_merge($arrInt, $_SERVER, $arrNull); //Смешиваем все массивы | |
} | |
function show($time, $key, $data){ | |
$time = (microtime(true) - $time); | |
echo sprintf( | |
'<strong>Поиск элемента с индексом <u>%s</u> в массиве $arr</strong><br /> | |
<u>%s</u><br /> | |
Затрачено времени: <strong> %f </strong> сек.<hr />' | |
,$key | |
,($data ? '<span style="color:blue">Элемент найден' : '<span style="color:red">Нет элемента</span>') | |
,$time | |
); | |
return $time; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment