Исходный текст скрипта:
<?php
function getmicrotime()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
$t1 = getmicrotime();
//исходный вариант: $a['b'] не существует
for ($i = 0; $i < 100000; $i ++) {
$x = (int)@$a['b'];
}
$t2 = getmicrotime();
//просто isset
for ($i = 0; $i < 100000; $i ++) {
$x = (isset($a['b']) ? (int)$a['b'] : null);
}
$t3 = getmicrotime();
//для удовлетворения паранойи: добавляем ещё одну проверку
for ($i = 0; $i < 100000; $i ++) {
$x = ((isset($a['b']) && is_numeric($a['b'])) ? (int)$a['b'] : null);
}
$t4 = getmicrotime();
//повторим для чистоты эксперимента
for ($i = 0; $i < 100000; $i ++) {
$x = (int)@$a['b'];
}
$t5 = getmicrotime();
echo ($t2 - $t1) . '---' . ($t3 - $t2) . '---' . ($t4 - $t3) . '---' . ($t5 - $t4) . "\n";
?>