Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstring>
- #include <memory>
- #include <benchmark/benchmark.h>
- void BenchCopy(benchmark::State& state)
- {
- const auto data_size = static_cast<size_t>(state.range(0));
- auto data1 = std::make_unique<char[]>(data_size);
- auto data2 = std::make_unique<char[]>(data_size);
- // Set to some valid form of initialized data.
- std::memset(data1.get(), 'x', data_size);
- while (state.KeepRunning())
- {
- std::copy(data1.get(), data1.get() + data_size, data2.get());
- }
- }
- void BenchMemcpy(benchmark::State& state)
- {
- const auto data_size = static_cast<size_t>(state.range(0));
- auto data1 = std::make_unique<char[]>(data_size);
- auto data2 = std::make_unique<char[]>(data_size);
- // Set to some valid form of initialized data.
- std::memset(data1.get(), 'x', data_size);
- while (state.KeepRunning())
- {
- std::memcpy(data2.get(), data1.get(), data_size);
- }
- }
- // Small copies
- BENCHMARK(BenchCopy)->Arg(100);
- BENCHMARK(BenchMemcpy)->Arg(100);
- // Large copies
- BENCHMARK(BenchCopy)->Arg(209715200);
- BENCHMARK(BenchMemcpy)->Arg(209715200);
- BENCHMARK_MAIN()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement