//===----------------------------------------------------------------------===// // // 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 #include #include #include "test_macros.h" static void BM_vector_bool_copy_ctor(benchmark::State& state) { std::vector vec(100, true); for (auto _ : state) { benchmark::DoNotOptimize(vec); std::vector vec2(vec); benchmark::DoNotOptimize(vec2); } } BENCHMARK(BM_vector_bool_copy_ctor)->Name("vector(const vector&)"); static void BM_vector_bool_move_ctor_alloc_equal(benchmark::State& state) { std::vector vec(100, true); for (auto _ : state) { benchmark::DoNotOptimize(vec); std::vector vec2(std::move(vec), std::allocator()); benchmark::DoNotOptimize(vec2); swap(vec, vec2); } } BENCHMARK(BM_vector_bool_move_ctor_alloc_equal) ->Name("vector(vector&&, const allocator_type&) (equal allocators)"); #if TEST_STD_VER >= 17 static void BM_vector_bool_move_ctor_alloc_different(benchmark::State& state) { std::pmr::monotonic_buffer_resource resource; std::pmr::vector vec(100, true, &resource); for (auto _ : state) { benchmark::DoNotOptimize(vec); std::pmr::vector vec2(std::move(vec), std::pmr::new_delete_resource()); benchmark::DoNotOptimize(vec2); } } BENCHMARK(BM_vector_bool_move_ctor_alloc_different) ->Name("vector(vector&&, const allocator_type&) (different allocators)"); #endif static void BM_vector_bool_size_ctor(benchmark::State& state) { for (auto _ : state) { std::vector vec(100, true); benchmark::DoNotOptimize(vec); } } BENCHMARK(BM_vector_bool_size_ctor)->Name("vector(size_type, const value_type&)"); static void BM_vector_bool_reserve(benchmark::State& state) { for (auto _ : state) { std::vector vec; vec.reserve(100); benchmark::DoNotOptimize(vec); } } BENCHMARK(BM_vector_bool_reserve)->Name("vector::reserve()"); static void BM_vector_bool_resize(benchmark::State& state) { for (auto _ : state) { std::vector vec; vec.resize(100); benchmark::DoNotOptimize(vec); } } BENCHMARK(BM_vector_bool_resize)->Name("vector::resize()"); BENCHMARK_MAIN();