Производительность сериализации C ++

Я создаю распределенное приложение C ++, которое должно выполнять множество операций сериализации и десериализации данных, хранящихся в контейнерах std.

В настоящее время принята Boost.serialization. Однако он работает ужасно. Наше B-дерево также использует Boost.serialization для хранения данных пары ключ-значение, однако, если мы изменим Boost.serialziation на memcpy, скорость доступа увеличится в 10 или более раз. Поскольку с учетом текущей распределенной платформы, требуется обмен данными, поэтому простое программирование также требуется вместе с высокой производительностью. Я знаю, что буфер протокола также может использоваться в качестве механизма сериализации, однако я не уверен в сравнении производительности между Boost.serialization и буфером протокола, другая проблема заключается в том, существуют ли лучшие решения для повышения производительности поставщика, максимально приближенного к memcpy?

Спасибо


person Community    schedule 24.03.2009    source источник
comment
Насколько я знаю, у форсированной сериализации разные архивы. вы пользуетесь бинарным архивом?   -  person Johannes Schaub - litb    schedule 24.03.2009
comment
Вы сериализуете на диск или просто отправляете данные по сети?   -  person Max Lybbert    schedule 24.03.2009
comment
Посмотреть графическое сравнение можно здесь: ‹br› code.google.com/p/ thrift-protobuf-compare / wiki / Benchmarking   -  person lsalamon    schedule 25.03.2009


Ответы (1)


Кто-то задал очень похожий вопрос: Производительность сериализации C ++

Похоже, буферы протоколов - хороший способ, хотя, не зная требований ваших приложений, трудно рекомендовать какую-либо конкретную библиотеку или методику.

person Colin Curtin    schedule 24.03.2009