llvm-project

Форк
0
/
util_smartptr.bench.cpp 
41 строка · 1.2 Кб
1
//===----------------------------------------------------------------------===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8

9
#include <memory>
10

11
#include "benchmark/benchmark.h"
12

13
static void BM_SharedPtrCreateDestroy(benchmark::State& st) {
14
  while (st.KeepRunning()) {
15
    auto sp = std::make_shared<int>(42);
16
    benchmark::DoNotOptimize(sp.get());
17
  }
18
}
19
BENCHMARK(BM_SharedPtrCreateDestroy);
20

21
static void BM_SharedPtrIncDecRef(benchmark::State& st) {
22
  auto sp = std::make_shared<int>(42);
23
  benchmark::DoNotOptimize(sp.get());
24
  while (st.KeepRunning()) {
25
    std::shared_ptr<int> sp2(sp);
26
    benchmark::ClobberMemory();
27
  }
28
}
29
BENCHMARK(BM_SharedPtrIncDecRef);
30

31
static void BM_WeakPtrIncDecRef(benchmark::State& st) {
32
  auto sp = std::make_shared<int>(42);
33
  benchmark::DoNotOptimize(sp.get());
34
  while (st.KeepRunning()) {
35
    std::weak_ptr<int> wp(sp);
36
    benchmark::ClobberMemory();
37
  }
38
}
39
BENCHMARK(BM_WeakPtrIncDecRef);
40

41
BENCHMARK_MAIN();
42

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.