File tree Expand file tree Collapse file tree 2 files changed +49
-1
lines changed Expand file tree Collapse file tree 2 files changed +49
-1
lines changed Original file line number Diff line number Diff line change @@ -17,7 +17,8 @@ bench_bench_bitcoin_SOURCES = \
17
17
bench/ccoins_caching.cpp \
18
18
bench/mempool_eviction.cpp \
19
19
bench/verify_script.cpp \
20
- bench/base58.cpp
20
+ bench/base58.cpp \
21
+ bench/lockedpool.cpp
21
22
22
23
bench_bench_bitcoin_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(EVENT_CLFAGS) $(EVENT_PTHREADS_CFLAGS) -I$(builddir)/bench/
23
24
bench_bench_bitcoin_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
Original file line number Diff line number Diff line change
1
+ // Copyright (c) 2016 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.h"
6
+
7
+ #include " support/lockedpool.h"
8
+
9
+ #include < iostream>
10
+ #include < vector>
11
+
12
+ #define ASIZE 2048
13
+ #define BITER 5000
14
+ #define MSIZE 2048
15
+
16
+ static void LockedPool (benchmark::State& state)
17
+ {
18
+ void *synth_base = reinterpret_cast <void *>(0x08000000 );
19
+ const size_t synth_size = 1024 *1024 ;
20
+ Arena b (synth_base, synth_size, 16 );
21
+
22
+ std::vector<void *> addr;
23
+ for (int x=0 ; x<ASIZE; ++x)
24
+ addr.push_back (0 );
25
+ uint32_t s = 0x12345678 ;
26
+ while (state.KeepRunning ()) {
27
+ for (int x=0 ; x<BITER; ++x) {
28
+ int idx = s & (addr.size ()-1 );
29
+ if (s & 0x80000000 ) {
30
+ b.free (addr[idx]);
31
+ addr[idx] = 0 ;
32
+ } else if (!addr[idx]) {
33
+ addr[idx] = b.alloc ((s >> 16 ) & (MSIZE-1 ));
34
+ }
35
+ bool lsb = s & 1 ;
36
+ s >>= 1 ;
37
+ if (lsb)
38
+ s ^= 0xf00f00f0 ; // LFSR period 0xf7ffffe0
39
+ }
40
+ }
41
+ for (void *ptr: addr)
42
+ b.free (ptr);
43
+ addr.clear ();
44
+ }
45
+
46
+ BENCHMARK (LockedPool);
47
+
You can’t perform that action at this time.
0 commit comments