Commit 7eab0b5 1 parent 9a8cc7c commit 7eab0b5 Copy full SHA for 7eab0b5
File tree 2 files changed +49
-1
lines changed
2 files changed +49
-1
lines changed Original file line number Diff line number Diff line change @@ -11,11 +11,12 @@ bench_bench_pivx_SOURCES = \
11
11
bench/bench_pivx.cpp \
12
12
bench/bench.cpp \
13
13
bench/bench.h \
14
- bench/checkblock.cpp \
15
14
bench/Examples.cpp \
16
15
bench/base58.cpp \
16
+ bench/checkblock.cpp \
17
17
bench/checkqueue.cpp \
18
18
bench/crypto_hash.cpp \
19
+ bench/lockedpool.cpp \
19
20
bench/perf.cpp \
20
21
bench/perf.h \
21
22
bench/prevector.cpp
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