Сравнение скорости выполнения скрипта с @ и без. Нажмите F5, чтобы повторить тест.
0.13194108009338---0.041802883148193---0.031907081604004---0.11155581474304

Исходный текст скрипта:

<?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";

?>