Мне нужно сериализовать объекты средней сложности со свойствами смешанного типа от 1 до 100.
Первоначально использовался JSON, затем я переключился на BSON, который немного быстрее.
Кодирование 10000 образцов объекты
JSON: 1807mS
BSON: 1687mS
MessagePack: 2644mS (JS, modified for BinaryF)
Я хочу увеличения на порядок; он оказывает смехотворно плохое влияние на остальную систему.
Частью мотивации для перехода на BSON является требование кодирования двоичных данных, поэтому JSON (в настоящее время) не подходит. А поскольку он просто пропускает двоичные данные, присутствующие в объектах, это «обман» в этих тестах.
Профилированные горячие точки производительности BSON
Кодер BSON основан на библиотеке Mongo BSON.
Встроенный двоичный сериализатор V8 может быть замечательным, но, поскольку JSON является встроенным и быстро сериализуется, я боюсь, что даже это может не дать ответа. Возможно, лучше всего мне оптимизировать библиотеку BSON или написать свой собственный плюс найти более эффективный способ извлечения строк из V8. Одна из тактик может заключаться в добавлении поддержки UTF16 в BSON.
Итак, я здесь за идеями и, возможно, для проверки работоспособности.
Править
Добавлен тест MessagePack. Это было изменено по сравнению с исходным JS для использования BinaryF.
Библиотека C ++ MessagePack может предлагать дальнейшие улучшения, я могу протестировать ее отдельно для сравнения непосредственно с библиотекой BSON.