E 'più veloce per passare (float, float, float)
come parametri del metodo vs (float[])
in cui la matrice ha tre termini?
Dipende.Se hai già a disposizione la gamma di float, non dovrebbe fare alcuna differenza. Se si sta costruendo la matrice ogni volta, ciò richiederebbe un po 'di tempo per le assegnazioni alla matrice e forse un po' di tempo per la costruzione della matrice.
Ha importanza? Se lo fai in un circuito chiuso che viene eseguito qualche milione di volte in successione, e che molte volte durante la vita della tua applicazione, può certamente farlo.
E 'più veloce di un metodo per restituire un float [] vs impostando il contenuto di un galleggiante [] che viene passato al metodo come argomento?
Se è necessario costruire la matrice del galleggiante ogni volta per il valore di ritorno, quello non è certo intenzione di essere più veloce di impostazione dei valori in un array preesistente. Semplicemente perché entrambe le opzioni implicano l'impostazione di valori, e uno di questi ha il compito extra di creare un nuovo array. Ma la creazione di un nuovo array può essere davvero, molto veloce.
Tuttavia, se lo fai molti milioni di volte nella tua app in rapida successione, confrontalo, potrebbe farti risparmiare tempo.
E 'più veloce di sostituire le chiamate di metodo con i calcoli effettivi ovvero invece è A=sum(B,C)
qualsiasi più lento di A=B+C
? supponendo sum(x,y){return x+y}
Quasi impossibile dire. L'ottimizzatore di codice HotSpot integrato è abbastanza bravo a scoprire queste cose e ad ottimizzarle per il tuo.
Se benchmark questo, provare a fare il metodo di sum
private
, che renderà più facile per HotSpot decidere che può essere inline (anche se sarà anche scoprire questo da solo, se non si dispone di alcun implementazioni overridden di il metodo sum
)
l'unica cosa certa di analisi comparativa è:
può aiutare la vostra applicazione in questo momento, con la versione corrente della macchina virtuale che si sta utilizzando (e la vostra codebase corrente). Se si decide di eseguire l'aggiornamento a una nuova versione della VM, è possibile che le caratteristiche delle prestazioni cambino e potrebbe essere necessario ottimizzare nuovamente.
Quindi, fallo solo se è davvero importante per la tua applicazione, altrimenti potrebbe essere uno sforzo inutile.
Meglio concentrarsi prima sull'algoritmo e sulle sue complessità di spazio e tempo; qualsiasi guadagno ci sono guadagni per sempre.
Queste micro ottimizzazioni non faranno alcuna differenza su QUALSIASI scala. – Kon
@Kon ma sta parlando di un telefono cellulare e di molti calcoli. Non mi preoccuperei di questo su un PC JVM, ma non sono sicuro di adroid. – ZhongYu
@KevinXu buona domanda. Sono anche interessato a sapere queste cose. Vediamo cosa dicono gli esperti qui sopra. –