diff options
Diffstat (limited to 'libcxx/test/benchmarks/streams/fstream.bench.cpp')
| -rw-r--r-- | libcxx/test/benchmarks/streams/fstream.bench.cpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/libcxx/test/benchmarks/streams/fstream.bench.cpp b/libcxx/test/benchmarks/streams/fstream.bench.cpp new file mode 100644 index 0000000..3ca1801 --- /dev/null +++ b/libcxx/test/benchmarks/streams/fstream.bench.cpp @@ -0,0 +1,43 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include <fstream> +#include <vector> + +#include <benchmark/benchmark.h> + +static void bm_ofstream_write(benchmark::State& state) { + std::vector<char> buffer; + buffer.resize(16384); + + std::ofstream stream("/dev/null"); + + for (auto _ : state) + stream.write(buffer.data(), buffer.size()); +} +BENCHMARK(bm_ofstream_write); + +static void bm_ifstream_read(benchmark::State& state) { + std::vector<char> buffer; + buffer.resize(16384); + + std::ofstream gen_testfile("testfile"); + gen_testfile.write(buffer.data(), buffer.size()); + + std::ifstream stream("testfile"); + assert(stream); + + for (auto _ : state) { + stream.read(buffer.data(), buffer.size()); + benchmark::DoNotOptimize(buffer); + stream.seekg(0); + } +} +BENCHMARK(bm_ifstream_read); + +BENCHMARK_MAIN(); |
