Я сравниваю JSON и BSON для сериализации объектов. Эти объекты содержат несколько массивов большого числа целых чисел. В моем тесте объект, который я сериализую, содержит общее число около 12 000 целых чисел. Меня интересует только то, как сравниваются размеры сериализованных результатов. Я использую JSON.NET в качестве библиотеки, которая выполняет сериализацию. Я использую JSON, потому что я также хочу иметь возможность работать с ним в Javascript.
Размер строки JSON составляет около 43kb, а размер результата BSON - 161kb. Таким образом, коэффициент разницы около 4. Это не то, что я ожидал, потому что я смотрел на BSON, потому что считал, что BSON эффективнее хранить данные.
Итак, мой вопрос: почему BSON не эффективен, может ли он быть более эффективным? Или существует другой способ сериализации данных с массивами, содержащими большое количество целых чисел, которые можно легко обрабатывать в Javascript?
Ниже вы найдете код для проверки сериализации JSON/BSON.
// 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();
}
Edit:
Вот результирующие файлы https://skydrive.live.com/redir?resid=9A6F31F60861DD2C!362&authkey=!AKU-ZZp8C_0gcR0