#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace { template void deserialize_container(benchmark::State& state) { std::stringstream stream( std::ios_base::binary | std::ios_base::in | std::ios_base::out ); { Container c(state.range(0)); boost::archive::binary_oarchive out(stream); out << c; } while (state.KeepRunning()) { state.PauseTiming(); stream.seekg(0); boost::archive::binary_iarchive in(stream); Container c; state.ResumeTiming(); in >> c; benchmark::DoNotOptimize(c); } } BENCHMARK_TEMPLATE(deserialize_container, boost::double_ended::devector)->Range(8, 8 << 12); BENCHMARK_TEMPLATE(deserialize_container, boost::double_ended::devector)->Range(8, 8 << 12); BENCHMARK_TEMPLATE(deserialize_container, boost::double_ended::devector>)->Range(8, 8 << 12); BENCHMARK_TEMPLATE(deserialize_container, boost::double_ended::batch_deque)->Range(8, 8 << 12); BENCHMARK_TEMPLATE(deserialize_container, boost::double_ended::batch_deque)->Range(8, 8 << 12); BENCHMARK_TEMPLATE(deserialize_container, boost::double_ended::batch_deque>)->Range(8, 8 << 12); BENCHMARK_TEMPLATE(deserialize_container, std::vector)->Range(8, 8 << 12); BENCHMARK_TEMPLATE(deserialize_container, std::vector)->Range(8, 8 << 12); BENCHMARK_TEMPLATE(deserialize_container, std::vector>)->Range(8, 8 << 12); BENCHMARK_TEMPLATE(deserialize_container, std::deque)->Range(8, 8 << 12); BENCHMARK_TEMPLATE(deserialize_container, std::deque)->Range(8, 8 << 12); BENCHMARK_TEMPLATE(deserialize_container, std::deque>)->Range(8, 8 << 12); } // namespace BENCHMARK_MAIN();