Bitcoin Core
31.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
bench
lockedpool.cpp
Go to the documentation of this file.
1
// Copyright (c) 2016-present The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#include <
bench/bench.h
>
6
#include <
support/lockedpool.h
>
7
8
#include <cstddef>
9
#include <cstdint>
10
#include <vector>
11
12
#define ASIZE 2048
13
#define MSIZE 2048
14
15
static
void
BenchLockedPool
(
benchmark::Bench
& bench)
16
{
17
void
*synth_base =
reinterpret_cast<
void
*
>
(0x08000000);
18
const
size_t
synth_size = 1024*1024;
19
Arena
b(synth_base, synth_size, 16);
20
21
std::vector<void*> addr{
ASIZE
,
nullptr
};
22
uint32_t s = 0x12345678;
23
bench.
run
([&] {
24
int
idx = s & (addr.size() - 1);
25
if
(s & 0x80000000) {
26
b.
free
(addr[idx]);
27
addr[idx] =
nullptr
;
28
}
else
if
(!addr[idx]) {
29
addr[idx] = b.
alloc
((s >> 16) & (
MSIZE
- 1));
30
}
31
bool
lsb = s & 1;
32
s >>= 1;
33
if
(lsb)
34
s ^= 0xf00f00f0;
// LFSR period 0xf7ffffe0
35
});
36
for
(
void
*ptr: addr)
37
b.
free
(ptr);
38
addr.clear();
39
}
40
41
BENCHMARK
(
BenchLockedPool
);
bench.h
BENCHMARK
#define BENCHMARK(n)
Definition
bench.h:68
ASIZE
#define ASIZE
Definition
lockedpool.cpp:12
MSIZE
#define MSIZE
Definition
lockedpool.cpp:13
BenchLockedPool
static void BenchLockedPool(benchmark::Bench &bench)
Definition
lockedpool.cpp:15
Arena
Definition
lockedpool.h:49
Arena::alloc
void * alloc(size_t size)
Allocate size bytes from this arena.
Definition
lockedpool.cpp:50
Arena::free
void free(void *ptr)
Free a previously allocated chunk of memory.
Definition
lockedpool.cpp:86
ankerl::nanobench::Bench
Main entry point to nanobench's benchmarking facility.
Definition
nanobench.h:627
ankerl::nanobench::Bench::run
Bench & run(char const *benchmarkName, Op &&op)
Repeatedly calls op() based on the configuration, and performs measurements.
Definition
nanobench.h:1234
lockedpool.h
Generated on
for Bitcoin Core by
1.17.0