Драйвер MongoC ++ Конструкция BSON: основанный на потоке и основанный на разборе строки.Какой из них имеет лучшую производительность? - PullRequest
1 голос
/ 27 марта 2019

Драйвер MongoDB C ++ допускает два способа ( среди прочих ) создания объектов BSON.

На основе в потоке:

auto builder = bsoncxx::builder::stream::document{};
bsoncxx::document::value doc_value = builder
  << "name" << "MongoDB"
  << "type" << "database"
  << "count" << 1
  << "versions" << bsoncxx::builder::stream::open_array
    << "v3.2" << "v3.0" << "v2.6"
  << close_array
  << "info" << bsoncxx::builder::stream::open_document
    << "x" << 203
    << "y" << 102
  << bsoncxx::builder::stream::close_document
  << bsoncxx::builder::stream::finalize;

Основываясь на анализе строки JSON:

std::string doc = "{ "
  "\"name\" : \"MongoDB\","
  "\"type\" : \"database\","
  "\"count\" : 1,"
  "\"versions\": [ \"v3.2\", \"v3.0\", \"v2.6\" ],"
  "\"info\" : {"
    "\"x\" : 203,"
    "\"y\" : 102"
  "}"
"}";
bsoncxx::document::value bsoncxx::from_json(doc);

Я хотел бы знать, какая из них наиболее удобна с точки зрения производительности.Я склонен думать, что количество вызовов функций, задействованных альтернативой потока «под капотом», будет хуже, чем обработка строки JSON, но это может быть наоборот или быть равным.

Я пыталсянайти некоторую информацию об этом в документации драйвера MongoDB C ++ без удачи.Любая информация действительно приветствуется ... заранее спасибо!

...