Skip to content

Commit 006d23a

Browse files
committed
Add from msgpack test
1 parent 0a91964 commit 006d23a

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

tests/benchmarks/src/benchmarks.cpp

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,46 @@ BENCHMARK_CAPTURE(ToCbor, signed_ints, TEST_DATA_DIRECTORY "/regression/si
140140
BENCHMARK_CAPTURE(ToCbor, unsigned_ints, TEST_DATA_DIRECTORY "/regression/unsigned_ints.json");
141141
BENCHMARK_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

Comments
 (0)