mirror of
https://github.com/llvm-mirror/libcxx.git
synced 2025-10-22 07:51:39 +08:00
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
This commit is contained in:
42
benchmarks/util_smartptr.bench.cpp
Normal file
42
benchmarks/util_smartptr.bench.cpp
Normal file
@@ -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 <memory>
|
||||
|
||||
#include "benchmark/benchmark_api.h"
|
||||
|
||||
static void BM_SharedPtrCreateDestroy(benchmark::State& st) {
|
||||
while (st.KeepRunning()) {
|
||||
auto sp = std::make_shared<int>(42);
|
||||
benchmark::DoNotOptimize(sp.get());
|
||||
}
|
||||
}
|
||||
BENCHMARK(BM_SharedPtrCreateDestroy);
|
||||
|
||||
static void BM_SharedPtrIncDecRef(benchmark::State& st) {
|
||||
auto sp = std::make_shared<int>(42);
|
||||
benchmark::DoNotOptimize(sp.get());
|
||||
while (st.KeepRunning()) {
|
||||
std::shared_ptr<int> sp2(sp);
|
||||
benchmark::ClobberMemory();
|
||||
}
|
||||
}
|
||||
BENCHMARK(BM_SharedPtrIncDecRef);
|
||||
|
||||
static void BM_WeakPtrIncDecRef(benchmark::State& st) {
|
||||
auto sp = std::make_shared<int>(42);
|
||||
benchmark::DoNotOptimize(sp.get());
|
||||
while (st.KeepRunning()) {
|
||||
std::weak_ptr<int> wp(sp);
|
||||
benchmark::ClobberMemory();
|
||||
}
|
||||
}
|
||||
BENCHMARK(BM_WeakPtrIncDecRef);
|
||||
|
||||
BENCHMARK_MAIN()
|
Reference in New Issue
Block a user