diff options
Diffstat (limited to 'libcxx/benchmarks/filesystem.bench.cpp')
| -rw-r--r-- | libcxx/benchmarks/filesystem.bench.cpp | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/libcxx/benchmarks/filesystem.bench.cpp b/libcxx/benchmarks/filesystem.bench.cpp index 8dacbe6644e6..2cea3f69c673 100644 --- a/libcxx/benchmarks/filesystem.bench.cpp +++ b/libcxx/benchmarks/filesystem.bench.cpp @@ -21,11 +21,27 @@ void BM_PathConstructString(benchmark::State &st, GenInputs gen) { benchmark::DoNotOptimize(P.native().data()); } } -BENCHMARK_CAPTURE(BM_PathConstructString, iterate_elements, +BENCHMARK_CAPTURE(BM_PathConstructString, large_string, getRandomStringInputs)->Arg(TestNumInputs); template <class GenInputs> +void BM_PathConstructCStr(benchmark::State &st, GenInputs gen) { + using namespace fs; + const auto in = gen(st.range(0)); + path PP; + for (auto& Part : in) + PP /= Part; + benchmark::DoNotOptimize(PP.native().data()); + while (st.KeepRunning()) { + const path P(PP.native().c_str()); + benchmark::DoNotOptimize(P.native().data()); + } +} +BENCHMARK_CAPTURE(BM_PathConstructCStr, large_string, + getRandomStringInputs)->Arg(TestNumInputs); + +template <class GenInputs> void BM_PathIterateMultipleTimes(benchmark::State &st, GenInputs gen) { using namespace fs; const auto in = gen(st.range(0)); @@ -85,6 +101,4 @@ void BM_PathIterateOnceBackwards(benchmark::State &st, GenInputs gen) { BENCHMARK_CAPTURE(BM_PathIterateOnceBackwards, iterate_elements, getRandomStringInputs)->Arg(TestNumInputs); - - BENCHMARK_MAIN() |
