json/benchmarks/benchmarks.cpp

152 lines
3.8 KiB
C++
Raw Normal View History

2015-06-02 23:57:45 +02:00
#define BENCHPRESS_CONFIG_MAIN
#include <fstream>
#include <benchpress.hpp>
#include <json.hpp>
#include <pthread.h>
#include <thread>
struct StartUp
{
StartUp()
{
#ifndef __llvm__
// pin thread to a single CPU
cpu_set_t cpuset;
pthread_t thread;
thread = pthread_self();
CPU_ZERO(&cpuset);
CPU_SET(std::thread::hardware_concurrency() - 1, &cpuset);
pthread_setaffinity_np(thread, sizeof(cpu_set_t), &cpuset);
#endif
}
};
StartUp startup;
2015-06-02 23:57:45 +02:00
BENCHMARK("parse jeopardy.json", [](benchpress::context* ctx)
{
for (size_t i = 0; i < ctx->num_iterations(); ++i)
{
ctx->stop_timer();
2015-06-02 23:57:45 +02:00
std::ifstream input_file("benchmarks/files/jeopardy/jeopardy.json");
nlohmann::json j;
ctx->start_timer();
2015-06-02 23:57:45 +02:00
j << input_file;
ctx->stop_timer();
2015-06-02 23:57:45 +02:00
}
})
BENCHMARK("parse canada.json", [](benchpress::context* ctx)
{
for (size_t i = 0; i < ctx->num_iterations(); ++i)
{
ctx->stop_timer();
2015-06-02 23:57:45 +02:00
std::ifstream input_file("benchmarks/files/nativejson-benchmark/canada.json");
nlohmann::json j;
ctx->start_timer();
2015-06-02 23:57:45 +02:00
j << input_file;
ctx->stop_timer();
2015-06-02 23:57:45 +02:00
}
})
BENCHMARK("parse citm_catalog.json", [](benchpress::context* ctx)
{
for (size_t i = 0; i < ctx->num_iterations(); ++i)
{
ctx->stop_timer();
2015-06-02 23:57:45 +02:00
std::ifstream input_file("benchmarks/files/nativejson-benchmark/citm_catalog.json");
nlohmann::json j;
ctx->start_timer();
2015-06-02 23:57:45 +02:00
j << input_file;
ctx->stop_timer();
2015-06-02 23:57:45 +02:00
}
})
BENCHMARK("parse twitter.json", [](benchpress::context* ctx)
{
for (size_t i = 0; i < ctx->num_iterations(); ++i)
{
ctx->stop_timer();
2015-06-02 23:57:45 +02:00
std::ifstream input_file("benchmarks/files/nativejson-benchmark/twitter.json");
nlohmann::json j;
ctx->start_timer();
2015-06-02 23:57:45 +02:00
j << input_file;
ctx->stop_timer();
2015-06-02 23:57:45 +02:00
}
})
2016-07-20 23:06:45 +02:00
BENCHMARK("parse numbers/floats.json", [](benchpress::context* ctx)
{
for (size_t i = 0; i < ctx->num_iterations(); ++i)
{
ctx->stop_timer();
2016-07-20 23:06:45 +02:00
std::ifstream input_file("benchmarks/files/numbers/floats.json");
nlohmann::json j;
ctx->start_timer();
2016-07-20 23:06:45 +02:00
j << input_file;
ctx->stop_timer();
2016-07-20 23:06:45 +02:00
}
})
BENCHMARK("parse numbers/signed_ints.json", [](benchpress::context* ctx)
{
for (size_t i = 0; i < ctx->num_iterations(); ++i)
{
ctx->stop_timer();
2016-07-20 23:06:45 +02:00
std::ifstream input_file("benchmarks/files/numbers/signed_ints.json");
nlohmann::json j;
ctx->start_timer();
2016-07-20 23:06:45 +02:00
j << input_file;
ctx->stop_timer();
2016-07-20 23:06:45 +02:00
}
})
BENCHMARK("parse numbers/unsigned_ints.json", [](benchpress::context* ctx)
{
for (size_t i = 0; i < ctx->num_iterations(); ++i)
{
ctx->stop_timer();
2016-07-20 23:06:45 +02:00
std::ifstream input_file("benchmarks/files/numbers/unsigned_ints.json");
nlohmann::json j;
ctx->start_timer();
2016-07-20 23:06:45 +02:00
j << input_file;
ctx->stop_timer();
2016-07-20 23:06:45 +02:00
}
})
2015-06-02 23:57:45 +02:00
BENCHMARK("dump jeopardy.json", [](benchpress::context* ctx)
{
std::ifstream input_file("benchmarks/files/jeopardy/jeopardy.json");
nlohmann::json j;
j << input_file;
2015-06-03 23:34:10 +02:00
std::ofstream output_file("jeopardy.dump.json");
2015-06-02 23:57:45 +02:00
ctx->reset_timer();
for (size_t i = 0; i < ctx->num_iterations(); ++i)
{
ctx->start_timer();
2015-06-03 23:34:10 +02:00
output_file << j;
ctx->stop_timer();
2015-06-02 23:57:45 +02:00
}
2015-06-03 23:34:10 +02:00
std::remove("jeopardy.dump.json");
2015-06-02 23:57:45 +02:00
})
BENCHMARK("dump jeopardy.json with indent", [](benchpress::context* ctx)
{
std::ifstream input_file("benchmarks/files/jeopardy/jeopardy.json");
nlohmann::json j;
j << input_file;
2015-06-03 23:34:10 +02:00
std::ofstream output_file("jeopardy.dump.json");
2015-06-02 23:57:45 +02:00
ctx->reset_timer();
for (size_t i = 0; i < ctx->num_iterations(); ++i)
{
ctx->start_timer();
2015-06-03 23:34:10 +02:00
output_file << std::setw(4) << j;
ctx->stop_timer();
2015-06-02 23:57:45 +02:00
}
2015-06-03 23:34:10 +02:00
std::remove("jeopardy.dump.json");
2015-06-02 23:57:45 +02:00
})