From c6669cf33b61c9dfcb5f8e65df563c1b9dab11b0 Mon Sep 17 00:00:00 2001 From: Ben Craig Date: Mon, 1 Aug 2016 19:56:39 +0000 Subject: [PATCH] Adding smart_ptr benchmark Initial draft here: https://reviews.llvm.org/D22470 ... though this is Eric Fiselier's rewrite to fit in with Google Benchmark. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@277373 91177308-0d34-0410-b5e6-96231b3b80d8 --- benchmarks/util_smartptr.bench.cpp | 42 ++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 benchmarks/util_smartptr.bench.cpp diff --git a/benchmarks/util_smartptr.bench.cpp b/benchmarks/util_smartptr.bench.cpp new file mode 100644 index 000000000..3b27d7897 --- /dev/null +++ b/benchmarks/util_smartptr.bench.cpp @@ -0,0 +1,42 @@ +//===----------------------------------------------------------------------===// +// +// 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()