Bir Java nesnesinin serileştirmesi için, JSON ile genel serileştirme araçları arasındaki zaman ve mekansal performans açısından farkı test etmek istiyorum.
JSON Fastjson kullanmayı seçiyor.
Serileştirme aracı Protostuff ve Kyro kullanıyor. Neden protobuff'u kullanmıyorsun? Çünkü yüzlerce mevcut özelliği olan bir Java sınıfı için, yeni bir eşleşen proto dosyası oluşturmanın biraz insana aykırı olduğunu düşünüyorum. Protostuff, Protobuf'un geliştirilmiş bir versiyonudur; bu da Java Nesnesini doğrudan serileştirmeye olanak tanır; bunu Kyro gibi kullanarak, Protobuf kadar ara işlem olmadan. Diğerleri, örneğin Hession, serileştirme özellikli Java gibi oyunların, Kryo ve Protobuf'tan çok daha kötü performans gösterdiği söylenir, bu yüzden ne bekleyeceğimi bilmiyorum.
Basit bir testten sonra farkın oldukça belirgin olduğunu fark ettim, bu yüzden özel bir değerlendirme yapmaya gerek olmadığını hissettim. Günlüğün bir paragrafını kesip gönderin, herkes hisseder.
maliyet zamanı: System.nanoTime(); Üçü de varsayılan konfigürasyonlardır ve herhangi bir yapılandırma yoktur. Serileştirmeden sonra alan alanı protostuff'tan biraz daha düşüktür ve her ikisi de JSON'dan çok daha yüksektir. Bunu anlamak kolay, sonuçta json dizeleri okunabilir, fazla zorlamayın. Serileştirme ve seri deserileştirme için gereken süre, Kyro'dan daha iyi ve fark oldukça açık.
Sonuç olarak, eğer çok zorlu bir alan gereksinimi yoksa, Protostuff en iyi seçenek olabilir. Protostuff'un Kyro'ya göre ek bir avantajı var; yani java sınıfı serileştirmeden sonra ve serilikten çıkarmadan önce (ki gerçek işte kaçınılmazdır) alan eklerse, Kyro işe yaramaz olur. Ancak, protostuff sınıfın sonunda eklendiği ve güneş serisi JDK kullandığı sürece kullanılabilir. Bu nedenle, serileştirme önbellek gibi senaryolarda kullanılıyorsa ve serileştirilmiş nesne uzun süre saklanması gerekiyorsa, sadece protostuff seçebilirsiniz.
Tabii ki, okunabilirlik veya benzeri bir şey varsa, sadece json kullanabilirsiniz.
|