मुझे पता है कि यह प्रश्न इस बिंदु पर थोड़ा दिनांकित है ... मुझे लगता है कि यह उल्लेख करना बहुत महत्वपूर्ण है कि यह इस बात पर निर्भर करता है कि आपका ग्राहक / सर्वर कैसा दिखता है।
यदि आप निरीक्षण के बिना कई बार बाइट्स पास कर रहे हैं, जैसे कि संदेश कतार प्रणाली या डिस्क में लॉग एंट्री स्ट्रीमिंग के साथ, तो आप कॉम्पैक्ट आकार पर जोर देने के लिए बाइनरी एन्कोडिंग को अच्छी तरह से पसंद कर सकते हैं। अन्यथा यह विभिन्न वातावरणों के साथ केस इश्यू का मामला है।
कुछ वातावरण बहुत तेजी से क्रमांकन और Mspack / protobuf के / से / के लिए deserialization हो सकता है, दूसरों को इतना नहीं। सामान्य तौर पर, भाषा / वातावरण जितना अधिक बेहतर होगा, बाइनरी क्रमांकन उतना ही बेहतर होगा। उच्च स्तर की भाषाओं में (नोड.जेएस, .नेट, जेवीएम) आप अक्सर देखेंगे कि JSON क्रमांकन वास्तव में तेज़ है। फिर सवाल यह है कि क्या आपका नेटवर्क आपकी मेमोरी / सीपीयू की तुलना में कम या ज्यादा बाधित है?
Mspack बनाम bson बनाम प्रोटोकॉल बफ़र्स के संबंध में ... msgpack समूह की सबसे कम बाइट्स है, प्रोटोकॉल बफ़र्स उसी के बारे में हैं। BSON अन्य दो की तुलना में अधिक व्यापक देशी प्रकारों को परिभाषित करता है, और आपके ऑब्जेक्ट मोड के लिए एक बेहतर मेल हो सकता है, लेकिन यह इसे और अधिक क्रिया बनाता है। प्रोटोकॉल बफ़र्स को स्ट्रीम के लिए डिज़ाइन किए जाने का लाभ है ... जो इसे द्विआधारी हस्तांतरण / भंडारण प्रारूप के लिए एक अधिक प्राकृतिक प्रारूप बनाता है।
निजी तौर पर, मैं उस पारदर्शिता की ओर झुकूंगा जो सीधे JSON प्रदान करती है, जब तक कि हल्के यातायात की स्पष्ट आवश्यकता नहीं है। Gzipped डेटा के साथ HTTP पर, नेटवर्क ओवरहेड में अंतर स्वरूपों के बीच एक समस्या से भी कम है।