Además de no ser una buena práctica, dado que @
puede masticar errores realmente importantes en la pila de llamadas, la penalización de rendimiento es minúscula.
Vamos a verificar esto con un punto de referencia.
<?php
error_reporting(-1);
$limit = 10000;
$start = microtime(true);
for ($i = 0; $i < 10000; $i++) {
echo !isset($_GET['aaa']) ? '' : $_GET['aaa'];
}
$total = 1000000 * (microtime(true) - $start)/$limit;
echo "With isset: $total μs\n";
$start = microtime(true);
for ($i = 0; $i < 10000; $i++) {
echo @$_GET['aaa'];
}
$total = 1000000 * (microtime(true) - $start)/$limit;
echo "With @: $total μs\n";
En mi ordenador no tan reciente que da salida:
With isset: 0.295 μs
With @: 0.657 μs
mu s es una millonésima parte de un segundo. Ambos métodos toman cerca de la mitad de una millonésima de segundo.
Uno podría decir, pero ¿y si hago esto por cientos o miles de veces, habrá alguna diferencia? ¡Si tiene que hacer !isset()
un millón de veces, entonces su programa ya pasó aproximadamente 0.3 segundos haciendo esto! Lo que significa que no deberías haber estado haciendo eso en primer lugar.
Sin embargo, @
es una mala práctica para algo más complejo que una simple matriz, por lo tanto, no lo use incluso si usted sabe que la diferencia de rendimiento es insignificante.
EDITAR: Se ha agregado el paréntesis de cierre a la llamada 'isset()'. –