in cui:
  • Asserisco che Z.real () sia non nullo (visto che devo essere veloce, "delego" al chiamante questo controllo);
  • Elimino l'if utilizzando le funzione MySign e MyFunc;
  • Elimino i riferimenti e "ritorno" al chiamante il risultato;
  • Elimino il calcolo di Z_dist: magari il chiamante non se ne fa nulla, oppure per i fatti suoi gli basta lavorare su x^2+y^2 senza dover scomodare una sqrt.

i test di velocità falli sulla versione "release" non sulla "debug".

Perdona la mia ignoranza ma delle inline sono realmente meno dispendiose rispetto ai controlli if?

Il calcolo di Z_dist è effettivamente necessario anche se si potrebbe eliminare facilmente la radice quadrata in quanto bisogna confrontare il risultato successivamente.