Java'nın yerel serileştirme işleminin yavaş olduğu bir proje üzerinde çalışıyorum, bu nedenle üstün performans için sınıflarda Externalize arabirimini kullanmaya devam etmek istiyoruz. Bununla birlikte, bu sınıfların birçok veri üyesi vardır ve bu iki yöntemi yazarken hata yapmanın kolay olduğunu fark ettik. Sınıfın bütün üyelerini sadece bu işlevlerde okuyor/yazıyoruz, hiçbir şey fantezi değil. Çevrimdışı bir işlemde veya derleme zamanında otomatik olarak dışlanmak için writeExternal()
bloklarını oluşturmanın bir yolu var mı?Java Haricileştirilebilir readExternal()/writeExternal() bloklarını otomatik olarak oluştur
http://projectlombok.org/'a bir göz attım ve böyle bir şey ideal olurdu.
Benzer şekilde, bu sınıfları değişmez tutmak isteriz, ancak değişmez sınıflar dışsallaştırılabilir arabirimi uygulayamaz - proxy sınıfı modelini etkin java'dan kullanmak istiyoruz - oluşturulanın da yararlı olması gerekir.
Her zaman daha yavaş olacak olan serileştirme için çalışma zamanında yansıma kullanır. Farklı serileştirme yöntemlerini karşılaştırmak için http://code.google.com/p/thrift-protobuf-compare/wiki/Benchmarking adresine bakın. – MrLebowski
@MrLebowski Yansıma kullanımının farkındayım, ancak pratikte ağ ve disk bant genişliklerine gerçekten hükmediyor mu? ve bunu testlere dahil ettiler mi? ya da sadece ByteArrayOutputStreams için serileştirir misiniz? Tüm bunların tamamen akademik olduğunu da görebilirsiniz. – EJP
Bunu işaretlediğiniz için teşekkürler. İstatistikleri buradan kontrol edin: http://pastebin.com/yi4JhhVb --- Bu nedenle, toplam serileştirme ile ilgili zaman artışı, dışsallaştırmadan seri hale getirilebilir hale getirme işleminin yalnızca 1 ms civarında olması - bu, ağ zamanındaki artışın kötü olmasıdır. Sıkıştırılmış akışı deniyorum ve yardımcı olup olmadığını görüyorum. Hala otomatikleştirilmiş dışlanabilir veya daha iyi otomatik seri hale getirme en iyi olacaktır. – MrLebowski