xref: /llvm-project/libcxx/test/benchmarks/system_error.bench.cpp (revision b2d2494731976ab7aa9702f3134472db694b9332)
178b4b5ccSLouis Dionne //===----------------------------------------------------------------------===//
278b4b5ccSLouis Dionne //
378b4b5ccSLouis Dionne // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
478b4b5ccSLouis Dionne // See https://llvm.org/LICENSE.txt for license information.
578b4b5ccSLouis Dionne // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
678b4b5ccSLouis Dionne //
778b4b5ccSLouis Dionne //===----------------------------------------------------------------------===//
878b4b5ccSLouis Dionne 
9*b2d24947SLouis Dionne // UNSUPPORTED: c++03
10*b2d24947SLouis Dionne 
1178b4b5ccSLouis Dionne #include <string>
1278b4b5ccSLouis Dionne #include <system_error>
1378b4b5ccSLouis Dionne 
1478b4b5ccSLouis Dionne #include "benchmark/benchmark.h"
1578b4b5ccSLouis Dionne 
1678b4b5ccSLouis Dionne static void BM_SystemErrorWithMessage(benchmark::State& state) {
1778b4b5ccSLouis Dionne   for (auto _ : state) {
1878b4b5ccSLouis Dionne     std::error_code ec{};
1978b4b5ccSLouis Dionne     benchmark::DoNotOptimize(std::system_error{ec, ""});
2078b4b5ccSLouis Dionne   }
2178b4b5ccSLouis Dionne }
2278b4b5ccSLouis Dionne BENCHMARK(BM_SystemErrorWithMessage);
2378b4b5ccSLouis Dionne 
2478b4b5ccSLouis Dionne static void BM_SystemErrorWithoutMessage(benchmark::State& state) {
2578b4b5ccSLouis Dionne   for (auto _ : state) {
2678b4b5ccSLouis Dionne     std::error_code ec{};
2778b4b5ccSLouis Dionne     benchmark::DoNotOptimize(std::system_error{ec});
2878b4b5ccSLouis Dionne   }
2978b4b5ccSLouis Dionne }
3078b4b5ccSLouis Dionne BENCHMARK(BM_SystemErrorWithoutMessage);
3178b4b5ccSLouis Dionne 
3278b4b5ccSLouis Dionne BENCHMARK_MAIN();
33