Comments 19
Good work. Где скачать? нашел линк вначале стати
Можно ли к вашей библиотеке привязать msgpack как формат сериализации?
Можно ли к вашей библиотеке привязать msgpack как формат сериализации?
Использую много лет rapidjson — очень быстрая и стабильная библиотека.
По поводу бенчмарков — есть такой проект Native JSON Benchmark. Можете добавить туда свою библиотеку и сравнить с другими (на данный момент — 41 библиотека).
По поводу бенчмарков — есть такой проект Native JSON Benchmark. Можете добавить туда свою библиотеку и сравнить с другими (на данный момент — 41 библиотека).
А «много лет» это сколько, если у них релиз версии 1.0.0 состоялся 22 Apr 2015?
Использую Yajl 2.1.0, и, судя по тестам, зря я его выбрал.
Использую Yajl 2.1.0, и, судя по тестам, зря я его выбрал.
Rapidjson появилася в ноябре 2011 на Google Code
Хорошая ссылка для предварительной оценки. Но нужно смотреть на контекст использования. Например, если нужно быстро прочитать большой JSON, изменить пару полей и сохранить — это одна история, а вотJSON-RPC совершенно другая.
Очень интересное изложение.
Будет очень интересно еще раз окунуться в такое же повествование.
о котором я расскажу в следующей статье совсем скоро
Будет очень интересно еще раз окунуться в такое же повествование.
Было бы интересно добавить в ваше сравнение и jsmn (только десериализация). Говорят, что он чудовищно быстр.
В maxood выше привел ссылку на проект бенчмарков JSON. Сравнивать все варианты использования всех библиотек (кому то нужен DOM, только парсер или наоборот, быстрый сериализатор) в разных контекстах задача не благодарная. Ну а на счет чудовищной быстроты — это надо конкретно смотреть. Есть хитропопые товарищи которые умудряются свести время десериализации к нулю, а по факту оказывается, что десериализация происходит позже, при обращении к полям
jsmn быстр, потому что это не парсер, а лексер. Он даже escape последовательности не преобразует.
Очень точно сказано, там по первому же примеру видно как он работает, но не смог подобрать нужное слово. В wjson есть конструкция, которая позволяет сделать примерно тоже самое:
Здесь value, получает итераторы на начало и конец JSON элемента во входном буфере (для строки вместе с кавычками). Разумеется это будет работать и с массивами и объектами.
std::string json="\"Привет мир!\"";
typedef std::pair<std::string::iterator, std::string::iterator> range_t;
range_t value;
wjson::iterator_pair<range_t>::serializer()( value, json.begin(), json.end(), 0 );
Здесь value, получает итераторы на начало и конец JSON элемента во входном буфере (для строки вместе с кавычками). Разумеется это будет работать и с массивами и объектами.
Сделайте, пожалуйста, подписи к горизонтальным осям графиков. Хотя бы по принципу «Чем больше, тем хуже».
(del) акела промахнулся
На первый взгляд, ваша my_atoi() неверно обрабатывает числа вида +123 и 0123
Очень интересная статья, спасибо.
Если использовать Вашу библиотеку для сериализации структур, можно ли указать в для некоторых (целочисленных) полей default-значения, которые необязательно выгружать в json?
Если использовать Вашу библиотеку для сериализации структур, можно ли указать в для некоторых (целочисленных) полей default-значения, которые необязательно выгружать в json?
Хороший вопрос который показывает несовершенство дизайна wjson о котором я написал в заключении. Достаточно легко написать сериализатор для новых типов данных, но вот со всевозможными restrictions будут проблемы.Если вы сделаете вариант wjson::value с указанием значения, при котором сериализация не требуется, то получите что-то типа:
{"value":,}
Сериализатор для своего варианта wjson::member не предусмотрен, а сериализация мемберов вшита в сериализатор wjson::object. В вашем случае нужно реализовать свой сериализатор для wjson::object. Если посмотрите исходник, то увидите перегрузки для wjson::member, wjson::member_p и wjson::member_if. Простое добавление перегрузки для вашего варианта сериализации не сработает, т.к. в результате можете получить что-то типа {,"value":0}
Нужно немного подправить код в месте, где записывается ',' Sign up to leave a comment.
JSON-сериализатор на быстрых шаблонах