C'è una penalità da aggiungerePenalità per implementare Serializable in Java?
implements Serializable
ad una classe Java? Impatto sulla dimensione dell'oggetto o delle prestazioni istanziati?
C'è una penalità da aggiungerePenalità per implementare Serializable in Java?
implements Serializable
ad una classe Java? Impatto sulla dimensione dell'oggetto o delle prestazioni istanziati?
Il costo è vicino allo zero, non vale la pena preoccuparsi.
Alcuni ulteriori dettagli:
A meno che tu/qualcun altro non si serializzi/deserializzi effettivamente, non ci sarà alcun impatto. Serializable
è solo un'interfaccia marcatore.
Probabilmente aumenterà solo la dimensione del bytecode generato di alcuni byte.
Grazie, ho pensato anch'io. – AChoice
Nessun impatto sulle prestazioni a meno che non si esegua la serializzazione/deserializzazione, ma ci sono dei compromessi in termini di design delle API.
Da Effective java da Joshua Bloch
- Un costo maggiore di attuazione Serializable è che esso riduce la flessibilità per cambiare implementazione di una classe una volta che è stato rilasciato
- Un secondo costo di attuazione Serializable è che aumenta la probabilità di bug e falle di sicurezza
- Un terzo costo di implementazione Serializable è che aumenta il carico di testing associato al rilascio di una nuova versione di una classe
Fino a che punto questi sono applicabili dipendono dal vostro caso.
Non c'è alcun impatto sulle prestazioni anche se * si * esegue la serializzazione/deserializzazione, perché se non si implementa 'Serializable' non è possibile farlo affatto, quindi non c'è nulla con cui confrontarlo. – EJP
Grazie per Joshua-quote. Sono d'accordo. – AChoice
Onestamente non implementerei Serializable senza aver prima letto il libro Effective Java. –
Serializable
è solo un'interfaccia "marcatore". Non richiede l'implementazione di alcun metodo.
L'unica cosa è che è consigliabile avere un static final long serialVersionUID
per aiutare l'API di serializzazione. Ciò costa un singolo valore long
per classe serializzata.
Si potrebbe voler controllare this article about Java Serialization API. Descrive la maggior parte degli avvertimenti di serializzazione/deserializzazione in dettaglio.
È necessario considerare sempre l'overhead di manutenzione.Il costo di un'applicazione distribuita sul suo live può essere più volte il costo di svilupparlo.
In questo caso, il costo di una classe serializzabile, ma non effettivamente utilizzato per la serializzazione, potrebbe causare errori o confusione di gran lunga superiore al costo della prestazione. per esempio. Diciamo che ci vuole 1 minuto o il tempo di qualcuno per determinare che Serializable non è necessario, questo può costare molto di più del tempo di avvio extra di pochi secondi che l'applicazione comporta.
Se è effettivamente necessario Serializable, non è possibile confrontarlo con la versione non Serializable perché solo il primo caso eseguirà effettivamente il lavoro richiesto.
http://www.javalobby.org/java/forums/t88856.html –
Questo collegamento ha 5 anni. – adarshr
È il concetto? –