Sto lavorando su un progetto in cui la serializzazione nativa di Java è lenta, quindi vogliamo passare all'implementazione dell'interfaccia Externalize sulle classi per prestazioni superiori.Genera Java Externalizable readExternal()/writeExternal() blocca automaticamente
Tuttavia, queste classi hanno molti membri di dati e abbiamo realizzato che è facile commettere errori durante la scrittura di questi due metodi. Stiamo solo leggendo/scrivendo tutti i membri della classe in queste funzioni, niente di speciale. C'è un modo per generare i blocchi writeExternal()
per esternalizzare automaticamente in un processo offline o in fase di compilazione?
Ho dato un'occhiata a http://projectlombok.org/, e qualcosa del genere sarebbe stato l'ideale.
Analogamente, vorremmo mantenere immutabili queste classi, ma le classi immutabili non possono implementare l'interfaccia esternalizzabile - vogliamo usare il modello di classe proxy da java efficace - avere anche quello generato sarebbe utile.
Utilizza la riflessione in fase di esecuzione per la serializzazione, che sarà sempre più lenta. Consulta http://code.google.com/p/thrift-protobuf-compare/wiki/Benchmarking per confrontare i diversi metodi di serializzazione. – MrLebowski
@MrLebowski Sono consapevole del suo uso di Reflection, ma in pratica domina veramente le larghezze di banda della rete e del disco? e lo hanno incluso nei test? o semplicemente serializzare su ByteArrayOutputStreams per esempio? Potresti scoprire che tutto questo è completamente accademico. – EJP
Grazie per avermelo fatto notare. Controlla le statistiche qui: http://pastebin.com/yi4JhhVb --- Quindi l'aumento del tempo relativo alla serializzazione totale passando da externalizable a serializable è di circa 1ms - è l'aumento del tempo di rete che è male. Sto provando il flusso compresso e vedere se aiuta. L'esternalizzazione ancora automatizzata o una migliore serializzazione automatizzata saranno le migliori. – MrLebowski