Kısa giriş
Bu blog ağırlıklı olarak Xml, Json, Hessian ve Protokol Tamponlarının serileştirme ve seri deserileştirme performansını karşılaştırır, Xml ve Json'un temel kavramlarını bir kenara bırakır. Hessian: Hessian, ikili RPC protokolü ve yerleşik serileştirme yetenekleri kullanarak RMI işlevselliği sağlayan hafif bir uzaktan yönlendirme onhttp aracıdır. Protokol Tamponları: Google'dan veri alışverişi için kullanılan bir format olup, dil bağımsızdır ve ikili format olduğu için xml ile veri alışverişi için kullanmaktan çok daha hızlıdır ve dağıtık uygulamalar arasında veri iletişimi veya heterojen ortamlarda veri alışverişi için kullanılabilir. Verimli ve uyumlu bir ikili veri iletim formatı olarak, ağ iletimi, yapılandırma dosyaları, veri depolama gibi birçok alanda kullanılabilir. Google, Java, C++, Python uygulamaları sunuyor ve artık İnternet'te C# gibi dillerin uygulamaları da var.
Serileştirme ve serilikten çıkarma
XML: .Net ile gelen XmlSerializer'ı kullanın. Json: ServiceStack.Text kullanıyor, bu Newtonsoft.Json'dan daha performanslı, ama en hızlısı fastJSON.net olmalı. Hessian: HessianCSharp kütüphanesini kullanıyorum, nuget'ten indiriliyor. Protokol Tamponları: Protobuf-net kullanılarak, nuget'ten indirildi. Testte kullanılan varlıklar aşağıdakılardır.
Test makinesinde kullanılan i7HQ 2.6HZ işlemcisi. İşte testin sonuçları Serileştirme
Deserileştirme
Serileştirmeden sonra bayt uzunluğu
Önce serileştirmeden bahsedelim, burada sırasıyla 100, 1000, 10000 ve 100000 kez test ediliyor, koordinat tamamlanma süresi, birim milisaniye, 10000 kez test edildiğinde, 4 tür serileştirmenin zaman tüketimi çok küçük olduğunu görebilirsiniz, hepsi 200 milisaniye içinde, 100000 kez ile 100000 kez arasında hepsi büyümeye başlıyor, en kötüsü Xml, en iyisi Protokol Tamponları, ama 10000 kez içindeyse, Hessian, Protokol Tamponlarından daha iyidir. 10.000 seri deserileştirme içinde çok fazla fark yok, ancak 10.000 kez Hessian'ın daha zaman alıcı olduğunu ve 100.000 kez Hessian'ın doğrudan Xml'yi aştığını görüyoruz; bu da bana kodumda bir sorun olduğunu ve en iyi performansın hâlâ Protokol Tamponları olduğunu düşündürüyor. Serileştirilmiş bayt uzunluğu, Xml'de anlaşılır şekilde en uzun olanıdır, çünkü dosyada çok sayıda kapanış etiketi ()</Name> bulunur ve Protokol Tamponları hâlâ en iyisidir.
Yukarıdaki grafiğe dayanarak, Protokol Tamponları'nın en iyisi olduğunu neredeyse çabucak varsayabiliriz, ancak bence bunu aşağıdaki açılardan kapsamlı şekilde değerlendirmemiz gerekiyor: 1. Okunabilirlik: Xml ve Json serileştirmeden sonra metindir ve okunabilirlik çok iyidir; örneğin ortada bir hata varsa, değiş tokuş edilen verileri kolayca görebilir ve hatta test etmek için veriyi simüle edebiliriz; Hem Hessian hem de Protokol Tamponları ikilidir ve içerik serileştirmeden sonra okunamaz, bu da sistemin sorun giderme sürecini belli bir şekilde etkiler. 2. Çok Yönlülük: XML ve JSON zaten eski veri alışverişi formatlarıdır ve genel sistemler arasında veri alışverişi için iki formattır. Hem Hessian hem de Protocol Buffer'lar nispeten popüler değildir ve daha az kullanılır. 3. Kolaylık: Hessian aslında tam bir RPC çerçevesidir, sunucu tarafında arayüzü tanımlayıp arayüzü uygular, arayüzü istemciye kopyalar. Kısa bir kodlamadan sonra, sunucu tarafını yerel bir yöntem çağırması gibi çağırabiliriz, ki bu diğer üç araçta mevcut değildir ve performans kötü değildir.
|