I realise the second one avoids the overhead of a function call (update, is actually a language construct), but it would be interesting to know if one is be
unset is not actually a function, but a language construct. It is no more a function call than a return or an include.
unset
return
include
Aside from performance issues, using unset makes your code's intent much clearer.