WRT virgola mobile:
su un G1, l'aggiunta di due float richiede circa 400ns. l'aggiunta di due interi richiede circa 250ns.
su un nexus uno in esecuzione eclair (pre-JIT), entrambe le operazioni richiedono circa 120ns. (gli intagli sono leggermente più veloci, ma dovresti fare il microbenchmarking per notare.) C'è una piccola differenza percentuale tra int e long, float e double, ma in fondo se puoi permetterti uno, puoi probabilmente permetterti l'altro.
altri dispositivi attuali saranno a metà strada tra questi estremi. (anche altre operazioni differiscono: la moltiplicazione è più costosa di addizione/sottrazione e la divisione è ancora più costosa, nessun dispositivo attuale ha divisione di interi hardware.)
ma non ossessionare nulla di ciò finché non si ha un problema . è probabile che i problemi di prestazioni si ridurranno a una scelta scadente dell'algoritmo o della struttura dei dati, proprio come lo sono sempre i problemi di prestazioni di tutti.
la maggior parte della documentazione corrente (Eclair) sulle prestazioni non è corretta. confronta le cose da te, sul dispositivo (s) che ti interessa.
ma se si fosse veramente chiedendo "che cosa dovrebbe un/server programmatore Java Desktop attenzione?", Io suggerirei: allocazione inutili. non hai un core di riserva per fare il tuo GC come fai sul desktop/server, e non hai gigabyte di heap come fai sul desktop/server. se stai facendo GC, non stai facendo un vero lavoro, e il tuo heap sarà al massimo di 24MiB sui dispositivi attuali. quindi potresti voler evitare l'allocazione non necessaria nei loop interni.
fonte
2010-02-24 07:49:36
Mentre sono d'accordo su non ottimizzare presto ecc, questo non è il problema qui. Se per esempio tutte le operazioni float prendono 1ms e tutte le operazioni int 1ns, progettare tutte le strutture dati per punto fisso dall'inizio è solo buon senso. – Viktor
Se hai un budget di 50ms per eseguire il lavoro, se impiega 1ms o 1ns non ha importanza. Ottieni il codice funzionante e poi preoccupati per i dettagli. Convertire tra punto fisso e float è un giorno o due di lavoro al meglio. Ottieni app con algoritmi efficienti e quindi se hai bisogno di fare queste ottimizzazioni. In quasi tutte le app che ho visto, le grandi prestazioni non sono mai in micro ottimizzazioni. Stanno facendo in modo che non stiate facendo cose stupide (disegnando oggetti 2x, ordinando quando non è necessario, ...). Ci sono casi in cui la microottimizzazione è corretta. Lo saprai quando succede – hacken