मैं वस्तुओं को क्रमबद्ध करने के लिए जेएसओएन और बीएसओएन की तुलना कर रहा हूं। इन वस्तुओं में बड़ी संख्या में पूर्णांक के कई सरणी होते हैं। मेरे परीक्षण में जिस ऑब्जेक्ट में मैं क्रमबद्ध हूं, इसमें कुल 12,000 पूर्णांक हैं। मुझे केवल दिलचस्पी है कि आकार क्रमबद्ध परिणामों की तुलना कैसे करते हैं। मैं JSON.NET का उपयोग लाइब्रेरी के रूप में कर रहा हूं जो क्रमबद्धता करता है। मैं JSON का उपयोग कर रहा हूं क्योंकि मैं जावास्क्रिप्ट में इसके साथ काम करने में भी सक्षम होना चाहता हूं।जेएसओएन और बीएसओएन की तुलना करें
JSON स्ट्रिंग का आकार लगभग 43 केबी है और बीएसओएन का आकार 161 केबी है। तो 4 के बारे में एक अंतर कारक। यह मेरी अपेक्षा नहीं है क्योंकि मैंने बीएसओएन को देखा क्योंकि मैंने सोचा था कि बीएसओएन डेटा संग्रहित करने में अधिक कुशल है।
तो मेरा सवाल यह है कि बीएसओएन कुशल नहीं है, क्या इसे और अधिक कुशल बनाया जा सकता है? या क्या बड़ी संख्या में पूर्णांक वाले सरणी वाले डेटा को क्रमबद्ध करने का एक और तरीका है, जिसे जावास्क्रिप्ट में आसानी से संभाला जा सकता है?
नीचे आपको जेएसओएन/बीएसओएन क्रमबद्धता का परीक्षण करने के लिए कोड मिल गया है।
// Read file which contain json string
string _jsonString = ReadFile();
object _object = Newtonsoft.Json.JsonConvert.DeserializeObject(_jsonString);
FileStream _fs = File.OpenWrite("BsonFileName");
using (Newtonsoft.Json.Bson.BsonWriter _bsonWriter = new BsonWriter(_fs)
{ CloseOutput = false })
{
Newtonsoft.Json.JsonSerializer _jsonSerializer = new JsonSerializer();
_jsonSerializer.Serialize(_bsonWriter, _object);
_bsonWriter.Flush();
}
संपादित करें:
यहाँ जिसके परिणामस्वरूप फ़ाइलें https://skydrive.live.com/redir?resid=9A6F31F60861DD2C!362&authkey=!AKU-ZZp8C_0gcR0
आप कम संख्या का एक बहुत है, तो यह एक 32- या 64-बिट पूर्णांक के रूप में की तुलना में एक भी ASCII बाइट के रूप में उदाहरण के लिए भेजने के लिए, "2" तार के पार और अधिक कुशल हो सकता है (क्रमशः 4 और 8 बाइट्स)। क्या यह संभव है कि यह (या कुछ समान) आपके डेटा की संपत्ति है? –
अगर मैं इसे सही ढंग से समझता हूं, तो ASCII/UTF-8 के साथ एन्कोडिंग मैं जेएसओएन के साथ इस समय कर रहा हूं। पूर्णांक के सरणी वाले ऑब्जेक्ट को जेएसओएन प्रारूप में स्ट्रिंग में क्रमबद्ध किया जाता है। यह स्ट्रिंग तब तार पर भेज दी जाती है या यूटीएफ -8 में एन्कोडेड डिस्क में सहेजी जाती है। इसलिए संख्या ASCII/UTF-8 बाइट्स के रूप में भेजी जाती है। अगर मैं गलत हूं कृपया मुझे सही। – Ronald
[यहां] (https://coderwall.com/p/ccdryg) php में एक साफ प्रदर्शन बेंचमार्क बीटीडब्ल्यू जेसन और बीसन है। साथ ही, [प्रोटोकॉल-बफर-बनाम-जेसन-या-बीसन] देखें (http://stackoverflow.com/questions/2000933/protocol-buffers-versus-json-or-bson) – nawfal