Sto implementando un gioco per 2 giocatori che verrà eseguito in un loop stretto letteralmente centinaia di migliaia di volte, essendo quindi di primaria importanza per le prestazioni.Prestazioni di Java Enums?
mio codice è in realtà qualcosa di simile:
public class Table {
private final int WHITE_PLAYER = +1;
private final int BLACK_PLAYER = -1;
private final int currentPlayer;
private final int otherPlayer;
...
}
mi chiedevo se avrei avuto alcun calo di prestazioni dovrei scegliere di sostituire
private final int WHITE_PLAYER = +1;
private final int BLACK_PLAYER = -1;
ad un enum definito come
public enum Players {
WhitePlayer,
BlackPlayer
}
Ho avuto l'idea che le enumerazioni fossero solo zucchero sintattico rispetto alle costanti intere e che glaze guarda oltre il bytecode generato per un enum di test, così come il codice che lo chiama, sembra indicare che usarli è in effetti lo stesso che effettuare una chiamata di metodo statico ma per qualche infrastruttura enum che viene configurata al primo avvio.
La mia ipotesi è che sia effettivamente lo stesso utilizzare le enumerazioni come costanti statiche corrette o mi manca qualcosa qui?
centinaia di migliaia di volte per quale unità di tempo? –
buona domanda. eseguirò i giochi 24 ore su 24, 7 giorni su 7 (stima), quindi più velocemente finiscono, prima riesco ad analizzare i loro risultati. Imploro le persone a non trasformare questo in una tipica guerra contro il thread di ottimizzazione delle prestazioni .. –
Se pensasse che fosse davvero utile, lo misurerei. –