"Scrivere un codice Ruby efficiente" di Dr. Stefan Kaes ha da dire sull'assegnazione parallela (il tuo primo esempio):
Like any other Ruby expression, a value needs to be returned from a
parallel assignment. The value returned by a parallel assignment is
the value of the expression on the right-hand side of the assignment.
This means Ruby needs to create an array if the right-hand side is a
list of expressions:
$ irb
>> a,b = 1,2
=> [1, 2]
Of course, if the assignment isn’t the last statement of a method, the
created array becomes garbage immediately. It’s therefore advisable to
avoid the use of parallel assignment in performance-critical code
sections.
Dr. Kaes continua a ipotizzare che Ruby 1.9 possa cambiare la semantica delle assegnazioni parallele per restituire sempre true
per motivi di prestazioni.
Ai miei occhi, l'assegnazione parallela non aiuta né chiarezza né manutenibilità, quindi, per motivi di prestazioni a parte, lo eviterei naturalmente.