Il metodo equals()
(e anche il metodo compareTo()
) può diventare un hotspot di prestazioni (ad esempio in un traffico intenso HashMap
). Mi chiedevo quali trucchi hanno adottato le persone per ottimizzare questi metodi per questi casi quando si rivelano necessari.Ottimizzazione metodo equals()
IntelliJ IDEA, ad esempio, genera il seguente:
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
...
}
Che altro si è imbattuto in che può essere una linea guida per la scrittura di una buona esecuzione equals()
metodo?
Avrei dovuto menzionare che il metodo factory avrebbe scaricato la stessa istanza dalla tabella hash quando veniva chiamata con valori equivalenti. – devgeezer
Devi stare attento con 'internare'. Può portare a problemi di prestazioni e perdite di archiviazione se fatto in modo errato. In effetti, ecco perché chiamare String.intern() può essere una cattiva idea. –
Queste sono buone precauzioni da tenere a mente. Immagino che il mio consiglio per l'ottimizzazione sarebbe di guardare altrove, a meno che non abbiate prove concrete che Equals (...) sta prendendo un tempo inaccettabilmente lungo. – devgeezer