@@ -140,6 +140,46 @@ BENCHMARK_CAPTURE(ToCbor, signed_ints, TEST_DATA_DIRECTORY "/regression/si
140140BENCHMARK_CAPTURE (ToCbor, unsigned_ints, TEST_DATA_DIRECTORY " /regression/unsigned_ints.json" );
141141BENCHMARK_CAPTURE (ToCbor, small_signed_ints, TEST_DATA_DIRECTORY " /regression/small_signed_ints.json" );
142142
143+ // ////////////////////////////////////////////////////////////////////////////
144+ // Parse Msgpack
145+ // ////////////////////////////////////////////////////////////////////////////
146+
147+ static void FromMsgpack (benchmark::State& state, const char * filename)
148+ {
149+ std::ifstream f (filename);
150+ std::string str ((std::istreambuf_iterator<char >(f)), std::istreambuf_iterator<char >());
151+ auto bytes = json::to_msgpack (json::parse (str));
152+ std::ofstream o (" test.msgpack" );
153+ o.write ((char *)bytes.data (), bytes.size ());
154+ o.flush ();
155+ o.close ();
156+ for (auto _ : state)
157+ {
158+ state.PauseTiming ();
159+ auto * j = new json ();
160+ auto file = fopen (" test.msgpack" , " rb" );
161+ state.ResumeTiming ();
162+
163+ *j = json::from_msgpack (file);
164+
165+ state.PauseTiming ();
166+ fclose (file);
167+ delete j;
168+ state.ResumeTiming ();
169+ }
170+
171+ state.SetBytesProcessed (state.iterations () * bytes.size ());
172+ }
173+
174+ BENCHMARK_CAPTURE (FromMsgpack, jeopardy, TEST_DATA_DIRECTORY " /jeopardy/jeopardy.json" );
175+ BENCHMARK_CAPTURE (FromMsgpack, canada, TEST_DATA_DIRECTORY " /nativejson-benchmark/canada.json" );
176+ BENCHMARK_CAPTURE (FromMsgpack, citm_catalog, TEST_DATA_DIRECTORY " /nativejson-benchmark/citm_catalog.json" );
177+ BENCHMARK_CAPTURE (FromMsgpack, twitter, TEST_DATA_DIRECTORY " /nativejson-benchmark/twitter.json" );
178+ BENCHMARK_CAPTURE (FromMsgpack, floats, TEST_DATA_DIRECTORY " /regression/floats.json" );
179+ BENCHMARK_CAPTURE (FromMsgpack, signed_ints, TEST_DATA_DIRECTORY " /regression/signed_ints.json" );
180+ BENCHMARK_CAPTURE (FromMsgpack, unsigned_ints, TEST_DATA_DIRECTORY " /regression/unsigned_ints.json" );
181+ BENCHMARK_CAPTURE (FromMsgpack, small_signed_ints, TEST_DATA_DIRECTORY " /regression/small_signed_ints.json" );
182+
143183// ////////////////////////////////////////////////////////////////////////////
144184// serialize binary CBOR
145185// ////////////////////////////////////////////////////////////////////////////
0 commit comments