Mums te darbā panesās maza diskusija par to, vai lietot @ vai labāk tomēr isset(), un gribēju padalīties ar secinājumiem.
Pēc īsiem testiem ātri noskaidrojām uzvarētāju:
Execution times: 10'000'000
17.041812181473 seconds. [ @ ]
1.7088520526886 seconds. [ isset() ]
1.775101184845 seconds. [ isset() && var ]
1.7850821018219 seconds. [ isset() AND var ]
1.8156411647797 seconds. [ isset() && !empty(var) ]
1.7943229675293 seconds. [ isset() AND !empty(var) ]
1.7861270904541 seconds. [ !empty(var) ]
Uzreiz radās jautājums, kāpēc tieši tā. Tika pārlasīts vēlreiz manuālis, bet gala atbilde tā arī netika iegūta.
Ir rakstīts, ka iespējamie errori tiek ignorēti, bet nav 100% minēts, ka tie vispar tiek ģenerēti. Bet, protams, apskatot testa rezultātus, var secināt ka tiek gan ( laigan precīzas atbildes par to nav, ir tikai atsauksmes ).
Pirms tam tika patestēts arī ar izslēgtu error_reportingu kopumā, kur starpība bija stipri mazāka, bet tomēr bija, ir jākonstatē, ka errors vienmēr tiek triggerots, tikai pie izslēgtiem error_reporting tiek piefixēts fakts, ka bija kļūda, bez pašas kļūdas izveidošanas un otrajā gadījumā ( ar ieslēgtu error_reportingu ), tā tiek uzģenerēta pilnībā, bet netiek izvadīta ( bik atgādina veco dos stilu ).
Un vēl mazs interesants fakts, ifs AND !empty izpildās nezkāpēc mazliet ātrāk kā && !empty, laigan ar vienkāršu $var ( bez !empty ) pārbaudi notiek pretējais.