//===----------------------------------------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is dual licensed under the MIT and the University of Illinois Open // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include #include "benchmark/benchmark_api.h" static void BM_SharedPtrCreateDestroy(benchmark::State& st) { while (st.KeepRunning()) { auto sp = std::make_shared(42); benchmark::DoNotOptimize(sp.get()); } } BENCHMARK(BM_SharedPtrCreateDestroy); static void BM_SharedPtrIncDecRef(benchmark::State& st) { auto sp = std::make_shared(42); benchmark::DoNotOptimize(sp.get()); while (st.KeepRunning()) { std::shared_ptr sp2(sp); benchmark::ClobberMemory(); } } BENCHMARK(BM_SharedPtrIncDecRef); static void BM_WeakPtrIncDecRef(benchmark::State& st) { auto sp = std::make_shared(42); benchmark::DoNotOptimize(sp.get()); while (st.KeepRunning()) { std::weak_ptr wp(sp); benchmark::ClobberMemory(); } } BENCHMARK(BM_WeakPtrIncDecRef); BENCHMARK_MAIN()