Oprócz tego, że nie jest to dobra praktyka, ponieważ @
może zżerać naprawdę ważne błędy w stosie wywołań, kara wykonania jest niewielka.
Sprawdźmy to za pomocą testu porównawczego.
<?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";
Na moim nie tak niedawno komputera wyprowadza:
With isset: 0.295 μs
With @: 0.657 μs
mikrosekund jest milionowa sekundy. Obie metody zajmują blisko połowę jednej milionowej sekundy.
Można powiedzieć, ale co jeśli zrobię to setki lub tysiące razy, czy będzie jakakolwiek różnica? Jeśli musisz zrobić milion razy, to twój program spędził około 0,3 sekundy, robiąc to! Co oznacza, że nie powinieneś tego robić w pierwszej kolejności.
Mimo to, @
jest złą praktyką dla wszystkiego, co jest bardziej skomplikowane niż prosta tablica, a więc , nie używaj go jako, nawet jeśli wiesz, że różnica w wydajności jest niewielka.
EDYCJA: Dodanie nawiasu zamykającego do wywołania 'isset()'. –